ich habe drei Formulare, die nacheinander geöffnet werden und übereinander liegen.
Also Form1.show, dieses ruft ein Form2.show auf und dieses wiederum ein Form3.show.
Wenn ich jetzt Form3 schliesse, habe ich erwartet, dass in Form2 ein onShow-Event auftritt.
Das ist aber definitv nicht der Fall.
Was kann ich dagegen tun ?
Oder wird in diesem Fall ein anderer Event im Form2 ausgelöst ?
Mein Problem ist, dass in Form3 eine globale Variable gesetzt wird, welche in Form2 eingelesen und verarbeitet werden muss.
Das wollte ich im OnShow-Event von Form2 machen.
kein OnShow-Event
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: kein OnShow-Event
Nimm nicht OnShow, sondern OnActivate.
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: kein OnShow-Event
Nach dieser Beschreibung wurde Form2 nie geschlossen. Dann kann man auch kein OnShow-Event erwarten.malabarista hat geschrieben:ich habe drei Formulare, die nacheinander geöffnet werden und übereinander liegen.
Also Form1.show, dieses ruft ein Form2.show auf und dieses wiederum ein Form3.show.
Wenn ich jetzt Form3 schliesse, habe ich erwartet, dass in Form2 ein onShow-Event auftritt.
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: kein OnShow-Event
Richtig, Form2 wurde nie geschlsossen.
Denn falls es geschlossen würde, müsste es beim Schliessen von Form3 wieder geöffnet werden.
Und das lässt der Compiler nicht zu wegen "Circular References".
Denn falls es geschlossen würde, müsste es beim Schliessen von Form3 wieder geöffnet werden.
Und das lässt der Compiler nicht zu wegen "Circular References".
-
- Beiträge: 63
- Registriert: Di 11. Mär 2014, 00:33
Re: kein OnShow-Event
Wenn das Problem dadurch entsteht, dass du nicht jede Form aus einer Unit heraus aufrufen kannst, solltest du einmal probieren, die Unit der Form nicht oben unter "uses" zu deklarieren sondern erst nach der Zeile "implementation".
Also zum Beispiel:
Also zum Beispiel:
Code: Alles auswählen
unit u_form1;
interface
uses
Classes, SysUtils,
...
implementation
uses u_form2, u_form3;