Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование ActiveX, компонет MapX не работает в Builder 
:(
    Опции темы
Лена
Дата 16.8.2006, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



Есть компонент для картографии MapX. В примерах к нему есть код создающий специальный слой – карту, на которой можно затем рисовать. Код из стандартной справки на VB:

dim lyrInsertion as MapXlib.Layer
set lyrInsertion = Map1.Layers("USA")
lyrInsertion.Editable = True
Set Map1.Layers.InsertionLayer = lyrInsertion
После этого кода можно рисовать на слой – карте USA.

Пишу код на Builder:
Код

CMapXLayer * SelectAreaLayer;
void __fastcall TForm1::FormShow(TObject *Sender)
{
SelectAreaLayer = Map1->Layers->get_Item(OleVariant(1));//в Builder по номеру, №1 это нужный мне слой - карта
SelectAreaLayer->Editable = true;
Map1->Layers->InsertionLayer = SelectAreaLayer;
}


однако это не работает: свойство InsertionLayer не устанавливается.

Пробовала так:
Код

CMapXLayer * SelectAreaLayer;
void __fastcall TForm1::FormShow(TObject *Sender)
{
SelectAreaLayer = Map1->Layers->get_Item(OleVariant(1));
SelectAreaLayer->set_Editable(1);
Map1->Layers->set_InsertionLayer(SelectAreaLayer);
}

Тоже возвращает NULL.

Попытка обернуть в OLE:
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Variant vMap = Map1;
Variant SelectAreaLayer = vMap.OlePropertyGet("Layers").OlePropertyGet("Item",1);//эдесь!
SelectAreaLayer.OlePropertySet("Editable",true);
vMap.OlePropertyGet("Layers").OlePropertySet("InsertionLayer",SelectAreaLayer);
vMap.OlePropertySet("CurrentTool",miAddRegionTool);
}


Вызывает на строке исключение (рис в архиве)


Попытка получить доступ через IDispatch.Invoke (так правильно?):
Код

CMapXLayer * SelectAreaLayer;
SelectAreaLayer = Map1->Layers->get_Item(OleVariant(1));
SelectAreaLayer->Editable = true;

CMapXLayersDisp ServerForLayer; //тип из TLB файла без буквы T на конце
ServerForLayer.BindDefault(); //тут ошибка, которая ниже
ServerForLayer.get_Item(OleVariant(1));
ServerForLayer.set_InsertionLayer(SelectAreaLayer);

Юнит компилируется, а при общей компиляции ошибка:
[Linker Error] Unresolved external 'Mapxlib_tlb::CLSID_Layers' referenced from C:\DOCUMENTS AND SETTINGS\LENA\DESKTOP\AREA2\UMAP.OBJ

Может кто подскажет как с этим бороться?
Прилагаю файл TLB от MapX. Посмотрите, кто знает, это ошибка компонента в среде Builder или существует специфичный способ задания InsertionLayer в Builder?
сайт компонента: http://extranet.mapinfo.com/products/Overv...uctcategoryid=1




Это сообщение отредактировал(а) Лена - 16.8.2006, 15:09

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  ex.zip 86,81 Kb
PM MAIL   Вверх
Лена
Дата 16.8.2006, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



Ошибка с OLE

Присоединённый файл ( Кол-во скачиваний: 22 )
Присоединённый файл  ex.gif 9,10 Kb
PM MAIL   Вверх
kefir01
Дата 25.6.2008, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 22.6.2007

Репутация: 1
Всего: 2



Думаю нужно просто Variant

Вот рабочий код
Код

CMapXLayer *lyr;
lyr = Map1->Layers->_Item(Variant(1));
lyr->Editable = true;
Map1->Layers->InsertionLayer = lyr;


Это сообщение отредактировал(а) kefir01 - 25.6.2008, 16:17
PM MAIL   Вверх
Лена
Дата 25.6.2008, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



При любом коде InsertionLayer не работает в Builder. Чтобы в этом убедиться можно после любого кода поробывать получить имя InsertionLayer слоя:
wchar_t * name = Map1->Layers->InsertionLayer->_Name; //всегда исключение
PM MAIL   Вверх
kefir01
Дата 3.7.2008, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 22.6.2007

Репутация: 1
Всего: 2



И действительно, однако код что я привел создает слой и позволяет менять его свойства.
На самом деле у меня самого возникла проблема с созданием объектов на слое, но думаю проблема тут не в InsertionLayer...
PM MAIL   Вверх
Лена
Дата 3.7.2008, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



AnimationLayer тоже не желает работать в Builder :(
http://forum.sources.ru/index.php?showtopi...=animationlayer
AnimationLayer и InsertionLayer не удалось победить в C++ Builder. Остальное вроде работает.

Цитата(kefir01 @  3.7.2008,  13:44 Найти цитируемый пост)
На самом деле у меня самого возникла проблема с созданием объектов на слое,


Что имеется в виду?


P.S.
Если возникнет задача установить MapX на С++ Builder 2007, то тут инструкция:
http://qc.codegear.com/wc/qcmain.aspx?d=48143

PM MAIL   Вверх
kefir01
Дата 3.7.2008, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 22.6.2007

Репутация: 1
Всего: 2



Проблемы хотя бы с созданием точек
Пробую такой код:
Код

WideString lyrname = "CUSTOM";
MapX->Layers->CreateLayer(lyrname);
lyr = MapX->Layers->_Item(Variant(lyrname));
lyr->Editable = true;

  PointPtr pt;
  pt.CreateInstance(CLSID_Point, (void*)NULL, CLSCTX_INPROC_SERVER);
  pt->Set_(32.998,54.242);

  TVariant point   = (IDispatch*)pt;
  FeaturePtr p = MapX->FeatureFactory->CreateSymbol(point,Variant(MapX->DefaultStyle));

  lyr->AddFeature(p);

  pt.AddRef();
  VariantClear(point);


Результат - EAccessViolation 

Это сообщение отредактировал(а) kefir01 - 3.7.2008, 14:47
PM MAIL   Вверх
Лена
Дата 3.7.2008, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



А если так:
Код

CMapXLayer * TempLayer;

void __fastcall TForm1::Button1Click(TObject *Sender)
{
CMapXPointsDisp points;
points.Bind(StringToOleStr("MapX.Points.5"));
points.AddXY(20,10); //просто для примера
TempLayer->AddFeature(points);
long x = points.get_X(1);
long y = points.get_Y(1);
Map1->CenterX = x;
Map1->CenterY = y;
//points.RemoveAll();
//points.Unbind(StringToOleStr("MapX.Points.5"));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
//константа для временного слоя  Temp Layer
TempLayer = Map1->Layers->CreateLayer(WideString("Temp Layer"));
}
//---------------------------------------------------------------------------


Это сообщение отредактировал(а) Лена - 3.7.2008, 16:48
PM MAIL   Вверх
kefir01
Дата 3.7.2008, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 22.6.2007

Репутация: 1
Всего: 2



Лена, огромное тебе спасибо! 
Так как в примере не получилось (0 эффекта при нажатии), зато получилось вот так.

Код

    CMapXPointDisp point;                        //изменил на точку
    point.Bind(StringToOleStr("MapX.Point.5"));  //ах вот как оказывается, а я пробовал до этого как в дельфи через CreateOleObject
    point.Set_(X1,Y1);

    Variant pt = (IDispatch*)point;

    FeaturePtr p = MapX->FeatureFactory->CreateSymbol(pt,Variant(MapX->DefaultStyle));
    lyr->AddFeature(p);

    VariantClear(pt);


Это сообщение отредактировал(а) kefir01 - 3.7.2008, 21:40
PM MAIL   Вверх
Лена
Дата 4.7.2008, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



Хорошо, что все получилось. С реально работающим кодом MapX в С++ Builder трудно разобраться. МapInfo официально не поддреживает MapX в C++ Builder, поэтому трудно найти нормальные примеры. Но, хорошо что китайцы такие умные программисты.  smile 
Некоторые фрагменты кода для MapX, в свое время нашла на китайских сайтах.  У китайских товарищей совсем нет проблем с MapX в C++ Builder smile 
А вот о InsertionLayer и AnimationLayer инфо не нашла...

Это сообщение отредактировал(а) Лена - 4.7.2008, 09:53
PM MAIL   Вверх
kefir01
Дата 4.7.2008, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 22.6.2007

Репутация: 1
Всего: 2



А можешь тогда еще подкинуть код на вставку слоев из файла? Буду очень признателен.
А про поддержку BCB я в курсе. Китайцы трудолюбивые програмисты. Я на 3 день парок на форумы полез, а они видать сидят пробуют все пока не найдут решение =)

Этот код отказывается работать.
Код

CMapXLayerInfoDisp li;

li.Bind(StringToOleStr("MapX.LayerInfo.5"));
li.Type = miLayerInfoTypeTab;
li.AddParameter(WideString("FileSpec"),Variant(GetCurrentDir()+"\\maps\\x700.TAB"));
li.AddParameter(WideString("Visible"),Variant(true));
li.AddParameter(WideString("Name"),Variant("x700"));

Variant layer = (IDispatch*)li;

MapX->Layers->Add(layer,Variant(1));


Это сообщение отредактировал(а) kefir01 - 4.7.2008, 11:20
PM MAIL   Вверх
Лена
Дата 4.7.2008, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



Самое простое это создать в геосет менеджере геосет из нужных слоев и затем грузить его:
Map1->GeoSet = WideString("C:\\Program Files\\MAP\\имя_геосета.gst");
//Map1->Title->set_Visible(0);

Если грузить отдельный слой, то примерно как-то так:
Код

//можно вместо "индекс" переменную цикла
CMapXLayer * LYR[100];
CMapXDataset *DTS[100];
OleVariant unusedParam, unusedParam2;
AnsiString S = "путь к tab карте"
unusedParam.operator =(S);
LYR[индекс] =  Map1->Layers->Add(unusedParam, OleVariant(индекс));
DTS[индекс] = Map1->DataSets->Add(miDataSetLayer,Variant(LYR[индекс]),Variant(LYR[индекс]->Name));
//Map1->Layers->Move(индекс,позиция);
unusedParam2.operator =(индекс);
Map1->Layers->_Item(unusedParam2)->ZoomLayer = true;
Map1->Layers->_Item(unusedParam2)->ZoomMin = 
Map1->Layers->_Item(unusedParam2)->ZoomMax = 
Map1->Layers->_Item(unusedParam2)->Visible = 

PM MAIL   Вверх
kefir01
Дата 4.7.2008, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 22.6.2007

Репутация: 1
Всего: 2



Ок. Буду пробовать.
PM MAIL   Вверх
kefir01
Дата 7.7.2008, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 22.6.2007

Репутация: 1
Всего: 2



Нет, этот код не работает. Пытаюсь найти решение. Судя по документации слои добавляются через создание LayerInfo типа miLayerInfoTypeTab. Однако загвоздка заключается в том, что:

Код

Dim li as MapXLib.LayerInfo
Set li = CreateObject ("MapXMobile.LayerInfo.5")
li.Type = miLayerInfoTypeTab
li.AddParameter "FileSpec", "\My Documents\Maps\USA.tab"
li.AddParameter "Visible", False
li.AddParameter "AutoCreateDataset", True
li.AddParameter "DatasetName", "dsUSA"
Map1.Layers.Add li


И мой вариант:
Код

CMapXLayerInfoDisp li;
li.Bind(StringToOleStr("MapX.LayerInfo.5"));
li.Type = miLayerInfoTypeTab;
li.AddParameter(WideString("FileSpec"),Variant(GetCurrentDir()+"\\maps\\x700.TAB"));
li.AddParameter(WideString("Visible"),Variant(true));
li.AddParameter(WideString("Name"),Variant("x700"));
Variant layer = (IDispatch*)li;
MapX->Layers->Add(layer,Variant(1));


По идее в точности повторяет пример из руководства, за исключением того что там создается объект MapXMobile.LayerInfo.5 а у меня MapX.LayerInfo.5 подозреваю что ошибка может быть в этом.
PM MAIL   Вверх
Лена
Дата 8.7.2008, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



Цитата(kefir01 @  7.7.2008,  16:38 Найти цитируемый пост)
Нет, этот код не работает.


У меня этот код работает. В Table храняться пути к слоям, значаения min, max, ZoomLayer, Visible...

Код

Table1->First();

   AnsiString S;
   //S = DataModule1->Table5->FieldValues["FILE"];
   OleVariant unusedParam,unusedParam1,unusedParam2,unusedParam3, unusedParam4,unusedParam5;
   //unusedParam1.operator =(0);
   int i = 0;
   bool fromtable;
   double min;
   double max;
   CMapXLayer * LYR[100];
   CMapXDataset *DTS[100];

    for(int Cnt_Lyr=1; Cnt_Lyr<=Table1->RecordCount; Cnt_Lyr++)
          {
          S = Table1->FieldValues["FILE"];
          unusedParam.operator =(S);
          LYR[i] =  Map1->Layers->Add(unusedParam, OleVariant(i));
          DTS[i] = Map1->DataSets->Add(miDataSetLayer,Variant(LYR[i]),Variant(LYR[i]->Name));
          unusedParam2.operator =(Cnt_Lyr);
          Map1->Layers->Move(i,50);
          //проверка
          LYR[i] = Map1->Layers->_Item(unusedParam2);
          if(!LYR[i])
               {

                Label1->Caption = S;
                Application->MessageBox("Слой не создан...","Ошибка",MB_ICONEXCLAMATION);
                //return;

                }

          fromtable = Table1->FieldByName("VIS")->AsBoolean;
          unusedParam3.operator =(fromtable);
          min = (Table1->FieldValues["MIN"]);
          max = (Table1->FieldValues["MAX"]);
          unusedParam4.operator =(min);
          unusedParam5.operator =(max);
          Map1->Layers->_Item(unusedParam2)->ZoomLayer = true;
          Map1->Layers->_Item(unusedParam2)->ZoomMin = unusedParam4;
          Map1->Layers->_Item(unusedParam2)->ZoomMax = unusedParam5;
          Map1->Layers->_Item(unusedParam2)->Visible = unusedParam3;

          Table1->Next();
          i++;
         }




Это сообщение отредактировал(а) Лена - 8.7.2008, 09:11
PM MAIL   Вверх
kefir01
Дата 8.7.2008, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 22.6.2007

Репутация: 1
Всего: 2



А какая версия MapX у тебя?

Хм... Где-то я видать ступил.. Заработало все. Спасибо!

Это сообщение отредактировал(а) kefir01 - 8.7.2008, 13:07
PM MAIL   Вверх
Лена
Дата 8.7.2008, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



Цитата(kefir01 @  8.7.2008,  12:56 Найти цитируемый пост)
Заработало все.


Какие возможности MapX тебе удалось реализовать кроме тех, что здесь описывались (создание точки, загрузка слоев). Если что-то удалось реализовать еще, то выложи, пожалуйста, код. Я собираю рабочий код для MapX. smile 

Как ты думаешь можно ли засунуть в ресурсы карту и грузить ее от туда? Это нужно чтобы пользователи не могли забрать себе карту.

Можно ли грузить карту в MapX с серверного компьютера?

Можно ли включить MapX в свой инсталятор? 

Имел ли ты дело с новой технологий MapInfo: MapXTreme 2008. Это набор для VS 2005. Это развитие MapX на новую ступень. Можно создовать локальные и серверные приложения.

Будут новости, пиши. smile 

PM MAIL   Вверх
kefir01
Дата 10.7.2008, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 22.6.2007

Репутация: 1
Всего: 2



Напишу. Я сам только начал работать с MapX как до чего дойду - скажу. Мне предстоит разобраться с добавлением данных и т.п.

Насчет загрузки с сервера - может indy компоненты чем помочь смогут.

PM MAIL   Вверх
Лена
Дата 10.7.2008, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



Цитата(kefir01 @  10.7.2008,  11:45 Найти цитируемый пост)
Насчет загрузки с сервера - может indy компоненты чем помочь смогут.


С INDY знакома, но как загрузить с помощью них карту tab в MapX пока не представляю...

PM MAIL   Вверх
kefir01
Дата 10.7.2008, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 22.6.2007

Репутация: 1
Всего: 2



Топорный вариант - скачивать с сервера использовать и уничтожать при закрытии... Хотя понимаю это далеко от того что ты имеешь в виду.
PM MAIL   Вверх
Лена
Дата 11.7.2008, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



Цитата(kefir01 @  10.7.2008,  23:02 Найти цитируемый пост)
Топорный вариант - скачивать с сервера использовать и уничтожать при закрытии... Хотя понимаю это далеко от того что ты имеешь в виду. 


Попробую.

А как ты думаешь насчет других вопросов:

Можно ли засунуть в ресурсы программы карту и грузить ее от туда? Я когда-то пробовала. Давно это было но у меня что-то не получилось.

Можно ли включить MapX в свой инсталятор? 



PM MAIL   Вверх
kefir01
Дата 11.7.2008, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 22.6.2007

Репутация: 1
Всего: 2



Ну теоретически в ресурсы добавить можно... Только придется добавлять в таком случае не только геосет но и все слои к нему - нужны ли такие жертвы - вот в чем вопрос. Я смысла не вижу - слишком много работы - все равно в один файл прогу не получится сделать.

Ну типа нет, хотя тебе ничего не мешает найти все библиотеки, которые ставит официальный инсталлятор и установить их. При желании можно даже файл лицензии "правильный" закинуть ;) Тут все зависит от навыков работы в InstallShield или аналогах. Ну или можно написать инсталлятор самой. Разницы нет на самом деле. Главное - зарегистрировать потом то что установишь. 

Можешь попробовать в regedit найти все ключи и попробовать их программно зарегистрировать.
PM MAIL   Вверх
Лена
Дата 11.7.2008, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



Ясно. Буду эксперементировать. smile 
Очень важно чтобы пользователь не имел доступа к карте, ну и конечно MapX надо научиться инсталировать вместе с программой.
PM MAIL   Вверх
kefir01
Дата 11.7.2008, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 22.6.2007

Репутация: 1
Всего: 2



Цитата(Лена @  11.7.2008,  19:54 Найти цитируемый пост)
важно чтобы пользователь не имел доступа к карте

Доступа через прогу или вообще к файлам

Ну можно хранить карты в файле закрытом. 

По принципу. 
В программе вбит пароль от архива с картами и при вызове они распаковываются и убиваются при отключении.



PM MAIL   Вверх
Лена
Дата 14.7.2008, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



Цитата(kefir01 @  11.7.2008,  21:09 Найти цитируемый пост)
Доступа через прогу или вообще к файлам


Чтобы пользователь не смог взять и переписать себе например, на флешку карты и затем использовать их где-то...

Например, карта которая используется в программе стоит 1000 долларов. Какая технология наиболее подходит для защиты карты?
Хранить в ресурсах программы?
Загрузка с сервера?
Защищенный архив?

PM MAIL   Вверх
kefir01
Дата 14.7.2008, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 22.6.2007

Репутация: 1
Всего: 2



А пользователь знает о цене карты ;)
А он ее покупает отдельно? Если нет - то какая разница - цена карты входит в затраты по созданию программы...

Ну надежнее всего - в ресурсах.

Это сообщение отредактировал(а) kefir01 - 14.7.2008, 12:12
PM MAIL   Вверх
kefir01
Дата 3.9.2008, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 22.6.2007

Репутация: 1
Всего: 2



У меня снова вопрос:

Код

  FeaturePtr p = MapX->FeatureFactory->CreateRegion(pnts);

  p->Style->RegionPattern     = 15; //15;
  p->Style->RegionColor       = (unsigned long)Colors[l];
  p->Style->RegionBorderStyle = miPenSolid;
  p->Style->RegionBorderColor = (unsigned long)Colors[l];
  p->Style->RegionBorderWidth = 2;
  p->Style->RegionTransparent = true;
  p->set_Name(WideString("Line "+ IntToStr(l))); //проблемная строка
  lyr->AddFeature(p);


Имя не добавляется. Если пробоваить через p->Name = "Line"+ IntToStr(l), то вообще выдает ошибку [C++ Error] main.cpp(323): E2247 'CMapXFeature::Name' is not accessible

Не сталкивалась с такой проблемой?
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0685 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.