RUS  ENG 

ElemStyle на C++ Builder 6

Страницы: 1
RSS
ElemStyle на C++ Builder 6
 
Здравствуйте!
В форуме примеры только для Delphi...
Подскажите пожалуйста, как создать объект ElemStyle, а потом запихать его в AddText() на Builder'e
Спасибо!
 
IElemStylePtr elstyle;
elstyle = CoElemStyle::Create();
...
layer.AddText(..., elstyle);
 
Чего-то не хватает.
Вылетает 2 ошибки
[Linker Error] Unresolved external 'Zululib_tlb::IID_IElemStyle' referenced from D:\PROGRAM...MAINMODUL.OBJ

[Linker Error] Unresolved external 'Zululib_tlb::CLSID_ElemStyle' referenced from D:\PROGRAM...MAINMODUL.OBJ
 
Включите в проект Zululib_tlb.cpp
 
Спасибо!
 
Подскажите, что я неправильно делаю?
Нужно написать на карте определенным шрифтом! Приведите пример на С++!
В последней строке вылетает исключение access violation...

int count = Map->Map->Layers->Count;
Layer *layer = Map->Map->Layers->get_Item(count);

IElemStylePtr elstyle;

elstyle = CoElemStyle::Create();
elstyle->TextHeight = 2000;

layer->AddText(59947565, 30323110, (wchar_t *)("Privet!!!"), elstyle);
 
Третий параметр д.б. BSTR:
BSTR bstr = SysAllocString(L"Privet!!!");
layer->AddText(59947565, 30323110, bstr, elstyle);
SysFreeString(bstr);

У C++Builder есть класс-wrapper WideString, тогда с его помощью запись можно упростить:
layer->AddText(59947565, 30323110, WideString("Privet!!!"), elstyle);
 
Спасибо!
Скажите, а можно ли сделать его немассштабируемым?
elstyle->SymbolScalable = false;

\\ это не работает
 
Нет, текстовый объект всегда масштабируемый. SymbolScalable относится к стилю символьных объектов (пиктограммы).
 
Понятно, спасибо!
Скажите, чего не хватает?

PolyLine *pl = CoPolyLine::Create();
pl->AddPoint(59947565, 30323110);
pl->AddPoint(59967565, 30383110);

прога запускается, на второй строке во время работы программы вылетает ошибка.
 
CoPolyLine::Create (как и другие классы-оболочки CoXXXX у Билдера) возвращает не указатель на интерфейс, а smart-pointer не него. В нашем случае это TCOMIPolyLine, его можно приравнять другому smart-pointer'у и пользоваться.
Замените первую строчку на:
TCOMIPolyLine pl = CoPolyLine::Create();
или
IPolyLinePtr pl = CoPolyLine::Create();
 
Спасибо!
Подскажите есть ли такие возможности, я создал в Zulu символ - окружность с заливкой красного цвета. А как программно отредактировать этот символ, например, сделать эту окружность зеленой?
 
См. Symbol.SymbolElements, SymbolElement, SymbolElement.ElemStyle
Страницы: 1