RUS  ENG 

Помогите решить простую проблему

Страницы: 1 2 След.
RSS
Помогите решить простую проблему
 
Подскажите пожалуйста:
1. как будет выглядеть в Delphi следующий кусок из VB
...
Set Theme = new Theme
Theme.Creaate(....)
Или скажите как создавать новый объект в Делфях

2. Имеем следующий кусок кода
var
WayPoints:Variant;
keys:IElementKeys;
Theme:ITheme;

begin
....
WayPoints:=varArrayCreate([0,1],varVariant);
WayPoints[0]:=FirstNodeID;
WayPoints[1]:=SecondNodeID;

//Получаем путь между заданными узлами
keys:=MapCtrl1.Map.Layers.Active.GetShortWay(WayPoints); - почему-то ругается
а при использовании keys:=MapCtrl1.Map.Layers.Active.ShortWay(334,335); - нет
и скажите еще можно ли узнать этого расстояние в цифрах.

3. Где используется IControlBar и можно ли его использовать в своем приложении (не плагине)

4. Пример ввода ломаной - символа, соединяющей 2 др. символа

5. Для чего используются MapCtrl1.Map.InsertSymbol если его обработке ничего не происходит

6. Можно ли работать со скрытым слоем (обращаться к его элиментам из др слоя)

7. Zulu object с чем его едят и используют ли его в своих приложениях
 
1. ITheme theme;
theme := CoTheme.Create;
2. Не знаю, можно ли заполнять WayPoints именно так, чтобы получить VARIANT с SAFEARRAY, эементы которого имеют тип VT_I4. Проверьте в отладчике, что WayPoints.vt = VT_I4 or VT_ARRAY.
Вот, кстати, в вызове "varArrayCreate([0,1],varVariant);" д.б. varInteger в последнем параметре.
3. IControlBar используется только внутри оболочки ГИС (из плагинов).
4. Уточните, что именно не ясно. Координаты символов известны. Дальше заполнить PolyLine (AddPoint) и Layer->AddPolyLine.
5. InsertSymbol вызывает интерактивное действие "Вставка символа", как если бы нажали на соотв. кнопку. Работает, разумеется, в режиме редактирования слоя.
 
6. К элементам слоя можно обращаться независимо от того, видим ли он или загружен ли в карту.
7. Zulu используется в объектной модели оболочки (т.е. доступен из плагинов).
 
2. скажите можно ли узнать расстояние в цифрах для GetShortWay() или ShortWay()
4. Делаю PolyLine (AddPoint) указываю координаты точки, ничего не происходит
5. Да так точно написано в хелпе. Мои действия: активирую слой, обрабатываю MapCtrl1.Map.InsertSymbol ничего не происходит

:) - есть ли еще примеры, кроме выложенных на сайте - :)
 
2. Получили IElementKeys для пути в виде id_узла - id_участка - id_узла - ...
Для каждого id_участка можно вытащить длину (см. IElements, IElement), сложить - вот и длина пути.
4. Layer.AddPolyLine делали ?
5. Слой надо сделать редактируемым (активный слой - слой, куда кликнуть можно) (см. Layers.EditLayer, Laysers.EditIndex)

Примеры еще идут с инсталляцией, но на сайте похоже они все есть. Больше примеров пока нет.
 
Слушайте, с Вами приятно общаться.....

1. Итак, определить длину пути мне удалось :)

И вы оказались правы насчет "varArrayCreate([0,1],varVariant)".
"Вот он работоспособный код"
var
WayPoints:Variant;
keys:IElementKeys;
begin
................
WayPoints:=varArrayCreate([0,1],varInteger);
WayPoints[0]:=ID_точки1;
WayPoints[1]:=ID_точки2;

//Получаем путь между заданными узлами
keys:=MapCtrl1.Map.Layers.Active.GetShortWay(WayPoints);

2. Чем отличается "GetShortWay" от "ShortWay" кроме передаваемых параметров.
Почему, если для "GetShortWay" указать одну из точек, уже входящюю в путь, то IElementKeys не возвращается
Какой метод лежит в основе определения минимального пути: просто по длине, метод графов или какой др.

3. Чем отличается "AddSymbol" от "AddSimpleSymbol"

4. Layer.AddPolyLine для чего нужено Style As ElemStyle, если я использую символ с уже определенным Style
Я уже замучался с созданиеми "PolyLine" для символов, если можно пришлите пример кода

5. Как программно определить координаты символов

6. Если можно, расскажите поподробнее насчет создания навигатора

7. Как определить что расположено ближе ломаная-символ или символ

8. К программно задать (добавить, удалить, изменить, назначить) путь для машинок в примере Tracking
 
Добрый день.

1.
2.Ничем.
3. AddSimpleSymbol добавляются нетипизированные символы, AddSymbol добавляет объект заданного типа и режима.
4. Есть Layer.AddPolyLine, где добавляется полилилиния с заданным стилем. Это никакого отношения к символам не имеет.
А есть Symbol.AddPolyLine где в изображение символа добавляется полилиния. Примеры в демоверсии в разделе \Examples\VB\ есть

5. Есть символы из библиотеки символов, а есть символьные объекты на карте. Координаты объекта получить можно, например, Element.GetXY

6. У нас навигатора в объектной модели нет. Что имеется в виду?

7. Что такое ломаная-символ?

8. В примере машинка ездит по массиву точек, а программно путь следования можно задать бесконечным количеством способов. Машинка при движении ни чего не знает про путь. Она выполняет только метод Move или GoTo с заданными координатами, а откуда они беруться - это определяется задачей.
 
1. Решить проблемы с определением длины пути, добавлением PolyLine для связи символов и определением координат объекта мне удалось :).

2. Какой метод лежит в основе определения минимального пути: просто по длине, метод графов или какой др.

3. Насчет навигатора: навигатор - такойже как и в самой Zulu. Я делаю так: добавляю на форму 2 MapCtrl (один - главный, второй - навигатор), отлавливаю в навигаторе положение указателя и устанавливаю центр онка карты по этим координатам. Но почему-то он перерисовывается гораздо чаще чем в Zulu, т.е. это мигание добивает. К тому же у вас есть такой квадратик в навигаторе. Как его сделать? Если это объект слоя, то почему в навигаторе он виден, а в окне карты нет?

4. Что касается "ломаная-символ", то я имел в виду: что ближе ломаная или символ к заданному объетку(буду выражаться точнее). Задача такая: у меня есть карта движений, как в примере "Labirint". Мне нужно программно добавить новую и кочные точки или добавить одну и указать существующую - др. в любом месте карты, и определить кратчайший путь между точками. Ведь может так получиться, что путь с началом где-то на середине ломаной будет корочем, чем от узловой точки. КАК ПОСТУПИТЬ???

5. А машинка мне нужна, что бы затем проехать по определенному кратчайшему пути в пункте 4. Так мне для этого надо снова создавать ломаную из множества точек? Причем ведь для определения пути used ломаная между символами, а путь для машинок просто представляет собой ломаную из множества точек, (о ужас) они расположены в разных слоях.

6. И еще вопросик. Как изменить указатель мыши в окне карты, MapCtrl.Cursor:=cr... не работает.
 
2. Какой метод лежит в основе определения минимального пути.
Пути определяются, если данные заданы графом. Сеть состоит из типовых символьных объектов, соединенных типовыми полилиниями, помеченными в структуре слоя как участки.
3. Если реагировать только на MouseClick или отпускание мыши после перемещения, то часто моргать вроде не должно. Квадратик - не объект слоя и рисуется самостоятельно в HDC инверсно по XOR (один раз нарисовал, он появился, второй раз нарисовал по тому же месту - он пропал и т.д.)
4. У нас пути только от узла до узла. Если нужно искать кратчайший путь с какой-то точки на ломаной, можно конечно, изловчиться - разбить в этой точке участок символьным объектом, затем выполнить поиск, а затем вернуть все на место.
5. Для того, чтобы машинка "проехала" никакая ломаная не нужна. После того как путь получен, можно получить составляющие его объекты, по ним координаты и по ним перемещеть машинку.
6. Курсор пока никак не поменять. Не думали над этим.
 
Сейчас тружусь над написанием сего обсужденного (сдавать уже через неделю), а потом проект ляжет в основу диплома, так что на одного дипломника будет больше.
100 пудов еще вопросы появятся
 
А что за ВУЗ?
 
ВГТА - Воронежская государственная технологическая академия
 
Здравствуйте, снова вопросы. Надеюсь получить снова ответы :)

1. Хочу вывести в своей форме в Делфях символы, получаю по ActiveX объект Picture:IPictureDisp, а куда его выводить не знаю. В VB все просто. В PaintBox, Image не получается . Не подскажите как выполнить сие действие.
2.
Цитата:
... Квадратик - не объект слоя и рисуется самостоятельно в HDC инверсно по XOR (один раз нарисовал, он появился, второй раз нарисовал по тому же месту - он пропал и т.д.)
. HDC - handle объекта? Если да то почему не получается пункт 3.
3. Пробовал выводить символ через ISimbol.Draw(hDC,....) тоже не получается. Помогите.
4.И еще проблема. Мне надо нажать на кнопочку на форме и получить возможность добавить в окно карты новый элемент. Делаю так

MapCtrl1.Map.Layers[].Active:=true;
MapCtrl1.Map.Layers.EditLayer:=MapCtrl1.Map.Layers[];
MapCtrl1.Map.EditMode:=eEditModeSymbol

Почему в некоторых случаях работает, а в др. нет, хотя делаю одно и тоже. И как мне выбрать нужный символ для вставки, а то он выбирает как-то непонятно. Объясните

5. И еще такое дело: каким макаром мне определить зарегистрирована ли библиотека в системе. Однажды установил, аккуратно записал все CLSID классов, потом надо было установить Zulu заново, стал при загрузки проверять на наличие зарегистрированных компонент, а система сказала, что еще кучу нашла ??? А при каждом запуске регистрироваться неудобно: вдруг уже Zulu раньше установлено, то после программной регистрации она же работать не будет. Как быть? Как проверять?
 
Так поможет мне кто-нибудь или нет ???
 
Добрый день.
1. Мы Дельфи толком не знаем. IPictureDisp - стандартный интерфейс (не наш) и как-то стандартно должен выводится.
2. HDC - это контекст для рисования ты его как получал? Куда ты его вывести хотел?
4. Редактор в компоненте не обладает сейчас всем набором кнопок и режимов, которые есть в Zulu. Самое простое это вывести самому список символов, выбрать нужный, на клик мышки вызвать AddSymbol или AddPrimSymbol и все.
5. Самое простое это какой-то программкой попробовать создать объект из этой библиотеки CoCreateInstanse Если создастся, значит и зарегистрирована и присутствует физически.
 
Дело в том, что я уже много сделал на Delphi и переезжать на др. язык не хочется. А вообще надо было наверно на VB делать. Правда он проще во всех отношениях. Я думаю если делать на Builder - е такая же головная боль будет.
Насчет простоты действий вы конечно правы, но ведь в др. случае почему-то получается все гораздо проще и правильнее.

На счет символов: Раньше тема вывода изображений символов уже была затронута на форуме, но там так описано, что прото теория. Как бы это выглядило на языке кодов.
Честно, я уже запарился ...
 
Вот сам только что в Delphi набрал Все рисует. Symbols[1] - ID символа ставь свои

procedure TForm1.Button5Click(Sender: TObject);
var m_Hdc: integer;
begin
m_Hdc := GetDC( form1.handle);

Mapctrl1.Map.Layers.Active.Symbols[1].Draw(m_Hdc, 10, 10, 10, 0);

ReleaseDC(form1.handle, m_Hdc);

end;
 
Спасибо, обязательно попробую.

Тут возникает закономерный вопрос. А как вы делаете, чтобы при клике на соответстующем изображении символа система переходила в режим ввода выбранного символа.
 
Чтобы можно из объектной модели войти в режим ввода символа (чтобы с курсором таскалось его изображение), это нам нужно добавить эти возможности. Сейчас их нет.

Можно самому запомнить ID выбранного символа и по клику мыши добавлять символьный объект с этим символом. Безо всяких наших режимов т.е. Mode = eModeUser
 
Попробуем...
Вот что интересно: чем меньше времени до защиты практики, тем глубже я укапываюсь; чем глубже я укапываюсь, тем больше новых идей; чем больше идей, тем меньше времени до защиты практики.
А защита уже 16.03.05, а проект еще сырой очень и еще не оформлен.

А для вывода изображения через Picture в Делфях нужно подключить модуль AXCtrl, и использовать функцию SetOlePicture(TPicture,IPictureDisp) и выставляем свои размеры изображения
 
Вчера прошла защита практики...
Защитился на отлично. Вот что обидно другие направления разработок уже настолько забиты и так др мало сделали в практике, а оценки одинаковые. Аж зло берет.
Ну а можно ли к Вам устроиться на работу?
 
Поздравляем. Насчет работы не знаем, но пришли свой телефон и имя на адрес [email protected] Можно отчет о твоей работе на сайте разместить, чтобы ее увековечить.
 
Отсылаю работу и отчет (без исходников). Инструкция внутри и в письме. Предложения и пожелания присылайте на rambler (адрес в письме)
 
Так вы получили мое письмо или нет ???
 
Спасибо, все получили. Молодец! Так мы положим отчет на сайт?
Страницы: 1 2 След.