Nach zweitem Aufruf zeigt Form alten Inhalt

Für Fragen rund um die Ide und zum Debugger
Antworten
DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Nach zweitem Aufruf zeigt Form alten Inhalt

Beitrag von DL3AD »

Hallo,

ich habe folgenden effekt:
Im Form1 rufe ich über ein Klick ein Form2 modal auf.
Mit dem Ereignis oncreate des Form2 wird ein TImage dargestellt.
Über weitere Button in Form2 werden neue Inhalte in TImage dargestellt.

Wenn ich das Form2 schließe und es erneut aufrufe dann wird nicht das Bild geladen welches bei oncreate geladen werden sollte sondern dass welches beim letzten
Aufruf geladen wurde.

Was mache ich falsch ?

Gruß Frank

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Nach zweitem Aufruf zeigt Form alten Inhalt

Beitrag von m.fuchs »

Nichts, du gehst nur von einer falschen Annahme aus. Beim Schließen des Form2 wird es nämlich nicht zerstört, sondern lebt mit allen gesetzten Eigenschaften weiter. Zeigst du es erneut an ist alles so wie es vorher war. Du musst dich also selber darum kümmern, dass das Bild wieder in den ursprünglichen Zustand gesetzt wird.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Re: Nach zweitem Aufruf zeigt Form alten Inhalt

Beitrag von DL3AD »

... und wie macht man das ?

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Nach zweitem Aufruf zeigt Form alten Inhalt

Beitrag von Michl »

DL3AD hat geschrieben:dann wird nicht das Bild geladen welches bei oncreate geladen werden sollte sondern dass welches beim letzten Aufruf geladen wurde
Du könntest z.B. das Event ändern, in dem du das Ursprungsbild lädst: von OnCreate zu OnShow (OnShow wird immer ausgelöst, wenn das Formular neu angezeigt wird).

Du könntest auch das Formular zerstören und neu erstellen.

Du könntest bevor du Form2.Show (Form2.ShowModal) aufrufst, Form2 initialisieren (eine eigene Prozedur, die das Bild lädt).

Gibt sicher noch mehr Möglichkeiten.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Re: Nach zweitem Aufruf zeigt Form alten Inhalt

Beitrag von DL3AD »

Hallo Michl,

danke für den Hinweis - nun funktioniert es :)

Gruß Frank

Antworten