Освобождение формы с выбранным маркером приводит к сбою приложения (MapView)
Если какой-либо маркер выбран на MapView, используя это:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := TCloseAction.caFree;
end;
Сбой приложения сразу после закрытия формы.
Но, если использовать это:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
try
MapView1.DisposeOf;
finally
Action := TCloseAction.caFree;
end;
end;
Приложение не падает, но сообщение о нарушении доступа выдается после закрытия формы. Что может быть причиной этого? Есть как-нибудь этого избежать?
С наилучшими пожеланиями
1 ответ
Редактировать:
На самом деле я неправильно добавлял маркеры на карту. Вы не можете добавить TMarkerDescriptor следующим образом:
MapView1.AddMarker(MyMarker1); // MyMarker is a TMapMarkerDescriptor
Вы должны использовать TMapMarker следующим образом:
MMyMarker1 := MapView1.AddMarker(MyMarker1); // MMyMarker1 is a TMapMarker and MyMarker1 is a TMapMarkerDescriptor
Тем не менее, вы должны использовать:
MMyMarker1.DisposeOf;
на OnFormClose
для каждого маркера, который вы добавляете на карту, чтобы избежать сбоев, например:
procedure TForm69.FormClose(Sender: TObject; var Action: TCloseAction);
begin
try
MMyMarker1.DisposeOf;
finally
Action := TCloseAction.caFree;
end;
end;