Освобождение формы с выбранным маркером приводит к сбою приложения (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;
Другие вопросы по тегам