Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi image leeren (https://www.delphipraxis.net/22492-image-leeren.html)

Andreas L. 18. Mai 2004 09:07


image leeren
 
Hi,
ich lasse in der OnClose-Prozedure eines Forms alle Control leeren.

Delphi-Quellcode:
memo1.clear;
edit1.clear;
//etc....
Jetzt habe ich ein Image auf meiner Form. Dies beinhaltet ein Bild (irgendwie klar, oder?). Nun möchte ich in den OnCLose-Prozedure auch das image leeren, also das das bild weg ist. Mit Destroy mache ich das ganze TImage kaputt! Wie bekommen ich das Bild weg???

Greetz

Sharky 18. Mai 2004 09:21

Re: image leeren
 
Hai onlinehome,
Zitat:

Zitat von onlinehome
... Wie bekommen ich das Bild weg???...

Delphi-Quellcode:
   Image1.Picture := nil;
Was ich aber nicht verstehe: Warum im OnClose des Fensters? Wo ist der Sinn die Inhalte zu löschen wenn das Fenster eh nicht mehr zu sehen ist?

Andreas L. 18. Mai 2004 09:32

Re: image leeren
 
Wenn das fenster wieder angezeigt wird sollen keine Daten mehr in den Objekten stehen :-)

EDIT: Beinahe vergessen: DANKE :dp:

jaenicke 19. Mai 2004 12:48

Re: image leeren
 
Aber Vorsicht:

Wenn du die Picture Eigenschaft auf nil setzt, kannst Du auf deren Eigenschaften auch nicht mehr zugreifen!!!

Du musst das TPicture-Objekt dann neu erzeugen.

Sinnvoller wäre, statt die Komponenten manuell zu löschen, in OnClose des Formulars Action auf caClose zu setzen, womit das Formular aus dem Speicher entfernt und vor der nächsten Benutzung wieder mit Create neu erzeugt werden muss.

Dann ist da garantiert nix mehr drin...

Matze 19. Mai 2004 12:52

Re: image leeren
 
:hi: jaenicke!

Herzlich Willkommen in der DP! :thumb:

Es gibt auch die Möglichkeit
Delphi-Quellcode:
Image1.Picture.Assign(nil);
Aber ich weißt gerade auch nicht, ob man danach auf Picture zugreifen kann. :gruebel:

shmia 19. Mai 2004 12:57

Re: image leeren
 
Zitat:

Zitat von jaenicke
Aber Vorsicht:
Wenn du die Picture Eigenschaft auf nil setzt, kannst Du auf deren Eigenschaften auch nicht mehr zugreifen!!!
Du musst das TPicture-Objekt dann neu erzeugen.

Das ist so nicht ganz richtig :zwinker:
Es sieht zwar so aus, als ob nach der Zuweisung Picture=Nil wäre, dem ist aber nicht so:
Delphi-Quellcode:
procedure TImage.SetPicture(Value: TPicture);
begin
  FPicture.Assign(Value);
end;
Also sind folgende Zeilen gleichwertig:
Delphi-Quellcode:
Image1.Piture:= nil;
Image1.Picture.Assign(nil);
Völlig verboten wäre folgendes:
Delphi-Quellcode:
Image1.Picture.Free; // Objekt wird freigegeben, obwohl TImage davon nichts mitbekommt
                     // und immer noch eine nun ungültige Referenz auf das Objekt hält

mirage228 19. Mai 2004 12:59

Re: image leeren
 
Zitat:

Zitat von Matze
:hi: jaenicke!

Herzlich Willkommen in der DP! :thumb:

Es gibt auch die Möglichkeit
Delphi-Quellcode:
Image1.Picture.Assign(nil);
Aber ich weißt gerade auch nicht, ob man danach auf Picture zugreifen kann. :gruebel:

Ja auf das Picture Objekt schon, aber es wird das "Graphic" Objekt von TPicture auf NIL gesetzt :-D

mfG
mirage228

Matze 19. Mai 2004 13:00

Re: image leeren
 
Vielen Dank mirage! :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz