Доброе, наверное уже утро. Обнаружил странное поведение плагинов сделанных на Delphi. Поднял старый плагин, докоронавирусный, так сказать. Обновил Zulu. Странность в следующем: на PageControl на каком либо Табе лежат кнопка, поле ввода, etc. После подключения открытых в Zulu слоя или карты и потом нажатии на любую кнопку на этом Табе плагин виснет наглухо с убивание самой Zulu. Делаю новые проекты - виснет. Сначала особо не трогало, убрал PageControl , причем [B]кнопки лежащие прямо на основной форме работают[/B]. Сейчас стоит усложнить форму, тут без PageControl не обойтись, все уходит в зависание, приходится придумывать обходы.
В общем у меня такое резюме - кнопки (и не только они) на PageControl не живут. Дедукция подсказывает - что-то изменилось в обновленных версиях Zulu.
Спасибо за внимание, надеюсь - получилось объяснить проблему.
P.S. Установил на чистую виртуальную машину с Windows 7 почти последнюю Delphi 10.3 - не помогло. Задумываюсь о C# :-) ...
[CODE]Sub rename_mode() Set Out = OpenOutputChannel ("Сообщения") Out.Clear Out.Put "переименование режима" & chr(10) Set l = Zulu.ActiveMapDoc.Layers.Active
[CODE]переименование режима Участок: Участок водопроводной сети Статус редактирования: (EditState) 1 Режим до: Включен Переименовываем режим в Трубопровод Статус редактирования: (EditState) 1 Режим после: Включен [/CODE] что у меня не так? добавление режимов без проблем. удаление тоже, если режим не занят объектами
Добрый вечер. Delphi XE6, Zulu Версия 8.0.0.7552u и сервер и клиент.
Делаю плагин. Пытаюсь в плагине переименовать режим, но нет, эта конструкция оставляет как есть, Name не меняется: Layer.ObjectTypes.Item[nameof].Modes.Item[1].Name := 'Трубопровод'; причем периодически выдает Exception, без всякой системы При переименовании вручную в клиенте требует сохранения структуры слоя, как это сделать программно - не могу найти.
Подскажите как быть, когда нужно преобразование типов в SQL запросах? Что-то я не нашел, пробежавшись по документации. Может искал невнимательно или не там?
Возможно ли использовать sql запрос к слою по запросу, который не является основным к базе данных, извините за тавтологию. Объект "Запрос", насколько я понимаю , очень похож на вьюху обычной sql базы.
[S]Ок, все заработало. [/S]Одно заработало, старое отвалилось, на предыдущей версии сервера (8.0.0.6970) отрабатывает нормально.
SQL вида: [CODE]UPD ATE A SE T A.id_uch=B.sys FR OM [слой] as A, [слой] as B WH ERE B.geometry.STIntersects(A.geometry) and A.typeid = 14 and B.typeid = 6 [/CODE]приводит сервер к падению. Это скрипт привязи объекта (тип 14) к номеру участка (тип 6). Остальные SQL отрабатывают нормально, спотыкается на [B]geometry.STIntersects[/B].[B] [/B]
ZuluServer 8.0.0.7028, Windows 7 x64
Это кусок лога сервера во время падения (извините за длинный кусок, но как прицепить файлом не знаю):
на SQLite, SQL Server LocalDB, Microsoft Access и Paradox, результат один: db.Tables.Item[0].TableType: 0 db.Tables.Item[0].Source.SourceType: 0 db.Sources.Item[0].SourceType: 0
SQLite, SQL Server LocalDB, Microsoft Access дает имя источника, Paradox - пустая строка, например: db.Tables.Item[0].Source.Name: SQL Server LocalDB
// потом нужному полю запроса просто задаем источник значений visqry.Fields.Item[visqry.Fields.GetIndexByName(0,'нужное поле')].Book := db.Books.Item[db.Books.GetIndexByName(0,'справочник')];[/CODE]
'нужное поле' и 'справочник' - имена просто для наглядности, в коде наверно нужны англ. буковки (потому как в GetIndexByName тип 0, т.е. короткие имена).
ZuluGIS 8.0.0.6970u, Delphi XE6, но скорее всего это работает и на более ранних версиях.
Программно создаю базу. Так же программно сделал таблицу, сделал справочник, делаю запрос, но как подключить простой справочник к запросу? Подскажите алгоритм, в сторону каких объектов и методов смотреть. Если есть пример, неважно на каком языке - буду обязан.
Хотелось бы достучаться до колонтитулов программно, либо, если их можно настроить в макете печати, то программно выбрать нужный макет и вывести его на печать.
Тогда присоветуйте еще как вывести на печать номер листа/страницы при печати карт. Ранее в форуме мелькало пожелание колонтитулов с выводимой в него переменной Page и прочих, я так понимаю по аналогии с Internet Explorer.
Доброе утро! Пытаюсь установить область печати для PrintInfo методом SetAreaRect и что-то странное творится. Delphi XE6 , Zulu 8.0.0.6912u
P := CoPrintInfo.Create; rect := CoZrectangle.Create();
// беру область у нужного слоя (слой активный, если что) rect := Layer.GetBoundsRectangle;
// устанавливаю область печати по этому слою P.SetAreaRect(rect.Xmin,rect.Ymin,rect.Xmax,rect.Ymax);
// устанавливаю опции печати (ePrintInfoConstants) P.Options := ePrintDrawFrame + ePrintExplicitRect;
в результате при печати вижу только рамку, остальное поле пустое если к опциям добавлю ePrintLayerExtents и установлю P.HorzPages и P.VertPages, то наблюдаю на печати целиком слой и игнорирование SetAreaRect.
Игра с набором опций не дала никакого понимания как это все работает. Поясните пожалуйста как соотносится работа SetAreaRect с набором опций, чтобы получить на печать определенную область карты.
Добрый день. В ActiveX плагине открываю карту через диалог ZuluCommDlg, при закрытии плагина или самого ZuluGIS, Zulu.exe висит в памяти, не выгружается. Выгрузить пытался в DisconnectZuluPlugin. Если использую MapCtrl, реакции вообще никакой, ни на Free, ни на Destroy. Если IMapDoc (Map := CoMapDoc.Create; Map.Open....) при выходе Zulu падает как придется, то сразу, то через некоторое время после закрытия. У IMapDoc для закрытия только один подходящий метод - Map._Release.
Подскажите как корректно выгрузить плагин, карту, чтоб сам Zulu.exe нормально закрылся.
Спасибо! Ho IIF сломался, у меня в False было математическое выражение, если L сложить , умножить и прочее, то получаем IIF(modename="какой-то режим",0,L*5) Type mismatch in IIF parameters. Причем в True все нормально.
В IIF странная особенность, если нужно по условию вставить пустую строку, в итоге в выборке Null, что нежелательно, поэтому в True вставляю пробелы (один обычно), теперь вторая особенность - но теперь во всех строках (и до и после этой строки) если есть непустое значение, оно обрезается до 1 символа (ну или сколько пробелов вставлю) IIF(modename="Да"," ",value) -> value режется если так IIF(modename<>"Да",value," ") -> value не режется причем пустышка не обязательно первая
Я понимаю что в одних базах данных строка с нулевой длиной в итоге может быть Null, а в других нет, правда еще зависит от того какой язык программирования выбран для интерпретации данных.
Еще в августе у Вас спрашивали про [B]UNION[/B], присоединяюсь.
Обнаружилась такая штук - IIF. select IIF(value IS NULL,0,value) ......... В определенном смысле помогает, но агрегат сюда уже не вставишь IIF(SUM([L]) IS NULL,0,1) - ошибка Type mismatch in expression AND и OR тоже не понимает: select IIF(L > 30 AND L < 50 ,0,1) where typename = "Участки" - ошибка Bad operator. в последнем случае можно нагородить вложенные IIF.
По поводу "А каких ещё нужных функции не нашлось" так сразу и не скажешь. CASE .. WHEN еще не помешало бы. Сдается мне весь Transact-SQL все равно не влезет :)