如果使用以下方法在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;
应用程序不会崩溃,但在关闭表单后会触发Access违规消息。可能是什么导致了这个?有一点可以避免吗?
祝你好运
答案 0 :(得分: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;