RUS  ENG 

Дмитрий Озеров (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 ... 30 31 32 33 34 35 36 37 38 39 40 След.
Borland Database Engine (Error $2501)
 
В таком случае посмотрите в отладчике, где именно возникает exception.
Вполне вероятно то, что сначала оно возникает в zb.dll,
потом оно возникнет уже при выполнения Вашего кода, при обращении к BDE.
В zb.dll эта ошибка обходится путем использования отдельного объекта TSession и установкой у этого объекта уникальной PrivateDir.
Borland Database Engine (Error $2501)
 
Это exception возникает обычно под отладчиком, у нас оно обрабатывается внутри и инициализация проходит дальше.
Ничего страшного, под отладчиком просто пропускаете это сообщение и продолжаете выполнение дальше.
Zulu и Borland Developer Studio 2006
 
Билдер может и скомпилирует успешно, да потом вылетит, т.к. что IFontDisp***, что IPictureDisp*** совсем не правильно.
Методы get/set для свойств должны звучать так:
HRESULT Класс::get_Что-то( IЧто-то ** pVal);
HRESULT Класс::set_Что-то( IЧто-то * pVal);
Проверьте, наверняка в 6-м Билдере именно так.
Подобныйе глюки у Борланда не первый раз уже.
В 6-м Дельфи при импорте tlb, та вообще результат не
присваивала в методе-оболочке - метод возвращал мусор просто,
программа вылетала.
По поводу свойста Tools:
как звучит объявления get_Tools, set_Tools ?

PS Попробуем у себя поставить BDS и посмотреть как он импортирует наши библиотеки,
может получится выработать рекомендации на будущее.
Zulu и Borland Developer Studio 2006
 
По опыту работы с C++Builder, могу сказать, что как из версии 5-й в 6-ю, так и в Вашем случае, нельзя использовать файлы импорта из предыдущей версии - от версии к версии у Билдера меняются служебные классы (как неудачный TVariantInParam, продержавшийся только в 5-й версии) и после компиляции результат непредсказуем.
Здесь же, метод get_Font импортировался неправильно. Правильно так:
virtual HRESULT STDMETHODCALLTYPE get_Font(IFontDisp** pVal/*[out,retval]*/) = 0;
("IFontDisp**", а не "IFontDisp***")
а в методе-оболочка, где выдается ошибки, все правильно.
Тут остается только руками подправить там, где Билдер неправильно сгенерил объявления.
Событие изменения масштаба
 
Есть событие BeforePaint, которое возникает при перестроение карты. Кроме всего прочего это событие возникнет и при смене масштаба. При этом нужно будет проконтролировать значение масштаба, если изменилось - тогда перестроение именно из-за смены масштаба. Другое дело, что в этот момент запретить менять масштаб нельзя.
Кроме того, у Layer есть св-ва MinScale и MaxScale, определяющие диапазон масштаба отображения слоя. Может это лучше подойдет ?
совмещение шрифтов
 
Речь идет о бирках или о текстовом объекте ? В бирках шрифт задается для каждого элемента бирки (префикс + значение + постфикс), в текстовом объекте - для всего объекта целиком.
Может ли объект состоять из 2 частей?
 
1. Да, может. Выделите "дом". Нажмите Ctrl+T (задание мишени). Выделите с Shift "пристройку" и нажмите кнопку "объединить объекты". Теперь это один объект-поликонтур.
2. Берем Element. TypeID/ModeID скажут о типе и режиме. GraphType - о графическом типе, в зависимости от него берем либо GetXY, либо PolyPolyLine, либо PolyContour. Еще выясним ElemStyle, если объект типизированный, иначе - стиль диктуется режимом.
Формат файла проекта
 
а можно просто попробовать так:
ZuluLib.ElemStyle s;
s = el.ElemStyle; ?
А то, похоже ElemStyle от элемента не сохраняется должным образом...
Проблема с выполнением запросов
 
Пришлите по почте ([email protected], Дмитрию) как выглядят параметры выборки и еще, лучше, сам .zb файл либо вместе с таблицами, либо с их структурой, чтобы воспроизвести и посмотреть, что у Вас происходит.
Проблема с выполнением запросов
 
Добрый день! Выдается ли какое-либо сообщение об ошибке ?
Как отловить событие выделения объекта?
 
эта константа описана в библиотеке типов от Zulu.exe ("Zulu 5.0 Application"):
evMapSelChanged = 0x00010042,
Где можно получить расшифровку кодов ошибок
 
В настоящий момент, уже в новых методах объектов, мы больше не используем exceptions, а возвращаем VARIANT_BOOL. Это (ZuluLib exception caught with code 'NNN') осталось исторически.
Где можно получить расшифровку кодов ошибок
 
Используемые в настоящий момент коды ошибок в exceptions:
0:   OK
1:   общая ошибка
4:   индекс за границами множества
512: неопределенная ошибка при работе со слоем
513: не открыть слой
514: не создать слой
515: не загрузить слой
517: неправильный тип слоя
519: достигнуто максимальное кол-во слоев в карте
768: ошибка доступа к элементу слоя
770: неверный графический тип элемента
нумерация разветвлений
 
Имелось в виду, по какому принципу Вы планировали присваивать номер тому или иному разветвлению ?
Есть ли у объекта расшифровка поля?
 
Если правильно понял, речь идет о значении поля, берущееся из справочника ?
В этом случае у текущей записи в наборе данных IZbDataset можно получить как реальное значение поля FieldValue(i), так и "отображаемое" значение FieldDisplayValue(i). Последнее свойство в случае справочника вернет строку из справочника, иначе обычное значение из табоицы.
Если же Вы имели в виду что-то иное, уточните пожалуйста.
Проблема с StdPicture, ...
 
Что именно "см." ? Пишите по-конкретней...
Проблема с StdPicture, ...
 
Из присланных Вами файлов ясно, что метод set_Browser у билдеровского класса-оболочки TMapCtrl объявлен в private области, но при этом есть published свойство Browser. Используйте его. (т.е. можно так: MapCtrl1->Browser = что-то).

Про IPictureDisp: Дело в том, что IPictureDisp - это dispatch-интерфейс (об этом говорит суффикс Disp). Напрямую, по-сишному написать pict->Height конечно нельзя. Его можно использовать именно как dispatch-интерфейс (см. описание IPictureDisp в OLE Programmer's Reference). Кроме того, есть еще вариант: можно запросить у pict другой интерфейс IPicture и пользоваться его методами get_Width и get_Height.
Проблема с StdPicture, ...
 
Это значит, что при импорте Билдер (6-й) запретил использование этого метода непосредственно у класса TMapCtrl. Отчего он это делает - можно только узнать у разработчиков Билдера (в 5-м Билдере проблем нет, в 7-м Дельфи тоже). Возможно просто придется вызывать метод не у класса-оболочки TMapCtrl, а у интерфейса _DMapCtl, который реализует этот контрол. Пришлите, пожалуйста, файлы ZuluLib_TLB, ZuluLib_OCX, ZuluOcx_TLB, ZuluOcx_OCX (.h и .сpp) на [email protected], посмотрим как можно это обойти.
P.S. Вы не сообщили, что именно выдает компилятор на свойство Picture и как именно выглядит Ваша строка кода с ним.
Проблема с StdPicture, ...
 
Сообщите поконкретней, какие именно сообщения выдает компилятор.
Проблема с StdPicture, ...
 
Посмотрите в импортированном юните ZuluLib_TLB что возвращает метод get_Picture. В 5-м Билдере это IPictureDispPtr, что-то подобное должно быть и в 6-м, а не StdPicture. Свойство Picture само имеет тип IPictureDisp*.
Если созданный Билдером класс TMapCtrl (или TZbStdBrowser) не имеет свойства Browser(не опубликовано оно), то должны быть методы get_Browser/set_Browser. Используйте тогда их.
Обновление таблиц потребителя
 
Вы можете легко изменить порядок полей, группировку (или отменить ее) на Ваш вкус, отредактировав запрос в Редакторе Баз Данных. Обновление на состояние данных никак не влияет.
Как получить свойства объекта?
 
См. ветку "Как выйти на БД...". Это тоже самое...
Как выйти на БД текущего слоя в подключенном плагине?
 
В примере кода в предыдущем посте мы открываем семантическую базу по ID объекта, а дальше:
Query = zb.ActiveQuery
DataSet = Query.SelectByKey(ID)
В dataset обязательно попадает поле связи с картой, а также набранный список полей запроса. Вы просто можете брать значение поля DataSet->FieldValue(i).
Можно сделать так:
fields = DataSet.GetDataFields(zbDataFieldVisible) 'получили множество значимых/видимых полей запроса
index = fields.GetFieldIndexByName( zbShortName, "имя_поля")
fields.GetFieldValue(index)
или
fields.GetFieldDisplayValue(index)
Как отловить закрытие программы?
 
Плагин сам не отключается. Его выгружает Zulu. У плагина вызовется метод DisconnectZuluPlugin. Собственно это тот момент, когда плагину говорят, что все, он выгужается, надо освободить ресурсы, и т.д. Если плагин открывает окна или панели через IControlBar, то может потребоваться отлавливать события, что окна закрываются, чтобы "подчистить за собой".
Прорисовка объекта
 
Да нет, он не "наш", это стандартный OLE объект Picture, который возвращает интерфейс IPictureDisp (а также поддерживает IPicture, IPersistStream и прочие) (см. документацию по OLE, или MSDN). Если Вы не можете средствами Delphi получить свойство Handle, можно воспользоваться процедурой SetOlePicture (увидел такую в описании по VCL к Delphi 7).
Страницы: Пред. 1 ... 30 31 32 33 34 35 36 37 38 39 40 След.