0

Si un marqueur est sélectionné sur un MapView en utilisant ceci:forme libre avec un marqueur sélectionné fait crash d'application (MapView)

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); 
begin 
    Action := TCloseAction.caFree; 
end; 

Le crash de l'application juste après la fermeture du formulaire.

Mais, si vous utilisez ceci:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); 
begin 
try 
MapView1.DisposeOf; 
finally 
Action := TCloseAction.caFree; 
end; 
end; 

L'application ne tombe pas en panne, mais un message de violation d'accès est tiré après la fermeture du formulaire. Qu'est-ce qui peut causer cela? Il y a un moyen de l'éviter?

Meilleures salutations

+0

Je n'ai pas beaucoup de sens de cela. Vous fermez le formulaire (appel 'Close') de l'événement' OnMarkerClick' du contrôle de carte? Ou appelez-vous 'Free' d'un événement de contrôle? – Victoria

+0

@Victoria Le formulaire est fermé par un événement Button.OnClick (Form1.Close;) ou en utilisant le bouton Retour du téléphone. –

+2

On dirait qu'il y a un bug dans TMapView. Fournir un cas de test reproductible (de préférence avec une pile d'accompagnement) et le signaler, ici: https://quality.embarcadero.com –

Répondre

0

Edit:

En fait, j'ajouter des marqueurs à la carte dans le mauvais sens. Vous ne pouvez pas ajouter TMarkerDescriptor comme ceci:

MapView1.AddMarker(MyMarker1); // MyMarker is a TMapMarkerDescriptor 

Vous devez utiliser un TMapMarker comme ceci:

MMyMarker1 := MapView1.AddMarker(MyMarker1); // MMyMarker1 is a TMapMarker and MyMarker1 is a TMapMarkerDescriptor 

Cependant, vous devez utiliser:

MMyMarker1.DisposeOf; 

sur OnFormClose pour chaque marqueur que vous ajoutez à la carte pour éviter l'accident, comme ceci:

procedure TForm69.FormClose(Sender: TObject; var Action: TCloseAction); 
begin 
try 
MMyMarker1.DisposeOf; 
finally 
Action := TCloseAction.caFree; 
end; 
end;