понедельник, 10 января 2011 г.

Решение для MapWinGis по мотивам поста Delphi + ActiveX или ничего не понимаю

Добрый день коллеги, недавно я жаловался на странное поведение MapWinGis при загрузке карты (см. http://deeptown12.blogspot.com/2010/11/delphi-activex.html)
Так вот нашлось решения этой проблемы.


перед загрузкой карты в AddLayer нужно установить фокус на компонент ТMap  и тогда ошибка не возникает.
То есть сделать что то вроде:

procedure TForm2.Button1Click(Sender: TObject);
begin
Sh := CoShapefile.Create;
IF OpenDialog1.Execute then
begin
if not Sh.Open(OpenDialog1.FileName, nil) then
ShowMessage('Ошибка загрузки карты!');

try
// Без этого будет ошибка -------------------------------------------------
Map1.Setfocus;
// ------------------------------------------------------------------------

Map1.AddLayer(sh,true);
Map1.ZoomToMaxExtents;
except
On E:Exception do
ShowMessage(E.Message);
end;
end;
end;


Такой вот костыль позволяет нормально загружать shp файл и не генерирует ошибку. После чего использование MapWinGis в Delphi становится возможным.

Комментариев нет:

Отправить комментарий