0

如果使用以下方法在 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;

应用程序不会崩溃,但在表单关闭后会触发访问冲突消息。这可能是什么原因造成的?有什么办法可以避免吗?

此致

4

1 回答 1

0

编辑:

实际上,我以错误的方式向地图添加了标记。您不能像这样添加 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;
于 2017-08-11T02:52:09.817 回答