www.map-info.ru :: Просмотр темы - Delphi и слой анимации
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  

 
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
Aleksey



Зарегистрирован: 21.12.2008
Сообщения: 1

СообщениеДобавлено: Вс Дек 21, 2008 11:51 pm    Заголовок сообщения: Delphi и слой анимации Добавить ответ со ссылкой на данный текст

Здравствуйте.

Программа для отрисовки трассы спутника на карте мира.
При использовании анимационного слоя отрисовка трассы во время исполнения программы не происходит. Отрисовка происходит только после изменеия окна (изменеие размеров окна выделение объектов и т.д.). Т.е. во время выполнения процедуры MapInfo не перерисовывает Объекты изменяемые в анимационном слое.
Если делать слой не анимационным , то все работает. Объект
отображается сразу и изменяется.
Если кто-нибудь использовал анимационные слои в delphi приложениях, подскажите пожалуйста как это правильно сделать.


Код программы следующий:

//подключаюсь к mapinfo plmapper - это компонент Tpanel
MI := CreateOLEObject('MapInfo.Application');
plMapper.Caption := 'MI OLE-Server running... Open table, please...';
MI.Do(Format('Set Application Window %D', [Handle]));
MI.Do(Format('Set Next Document Parent %D Style %D', [plMapper.Handle, WIN_STYLE_CHILD

//открываю карту мира

if NOT OpenDialog.Execute then Exit;
OpenDialog.InitialDir := ExtractFilePath(OpenDialog.FileName);
tab_name := ExtractFileName(ChangeFileExt(OpenDialog.FileName, ''));
try
MI.Do(Format('Open Table "%S" As %S', [OpenDialog.FileName, tab_name]));
except
Raise;
Exit;
end;
if TableNum = 0 then
begin
MI.Do(Format('Map From %S', [tab_name]));
MapperHandle := MI.Eval(Format('WindowInfo(FrontWindow(), %D)', [WIN_INFO_WND]));
MI.Do('Set Map Display Position');

end
else MI.Do(Format('Add Map Layer %S ', [tab_name]));
RepaintMapper;
Inc(TableNum);

// создаю анимационный слой для отрисовки трассы

tmpfile:='"e:\temp\temp_tbl.tab"';
MI.Do('Dim animtab As String');
MI.Do(Format('animtab=%S',[tmpfile]));
MI.Do('Create Table tmp_demo ( Name Char(10),Number SmallInt ) File animtab');
MI.Do('Create Map For tmp_demo');
MI.Do('Add MapLayer tmp_demo Animate');

//отрисовка трассы (в данном коде просто имитация - вывод функции sin)

Mi.do('Dim PointSat As Object');
Mi.do('Create Point Into Variable PointSat (-180,0)');
MI.Do('Insert Into tmp_demo (obj) Values (PointSat)');

for j:=2 to 3 do
begin
MI.Do(Format('Dim myobj%d As Object',[j]));
MI.Do('Set Style Pen MakePen ( 2, 2, 16711680)');
MI.Do(Format('Create Pline Into Variable myobj%d 0',[j]));
MI.Do(Format('Alter Object myobj%d Node Add(%d,%d)',[j,-180,0]));
mi.do(Format('Insert Into tmp_demo (obj) Values (myobj%d)',[j]));

i:=-180;
repeat
y2:=5*j*sin(i);

Mi.do(Format('Alter Object PointSat Geography 1, %d',[i]));
Mi.do(Format('Alter Object PointSat Geography 2, %f',[y2]));
MI.do(Format('Alter Object myobj%d Node Add(%d,%F)',[j,i,Y2]));
MI.Do(format('Update tmp_demo set obj=myobj%d where Rowid=%d',[j,j]));
MI.Do(format('Update tmp_demo set obj=PointSat where Rowid=1',[j]));

i:=i+1;

until i=180;
end;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru