kein OnShow-Event

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
malabarista
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

kein OnShow-Event

Beitrag von malabarista »

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.

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

Re: kein OnShow-Event

Beitrag von Michl »

Nimm nicht OnShow, sondern OnActivate.

Code: Alles auswählen

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

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: kein OnShow-Event

Beitrag von wp_xyz »

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.

Nach dieser Beschreibung wurde Form2 nie geschlossen. Dann kann man auch kein OnShow-Event erwarten.

malabarista
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

Beitrag von malabarista »

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".

LazProgger
Beiträge: 63
Registriert: Di 11. Mär 2014, 00:33

Re: kein OnShow-Event

Beitrag von LazProgger »

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:

Code: Alles auswählen

 
unit u_form1;
 
interface
 
uses
  Classes, SysUtils,
 
...
 
implementation
 
uses u_form2, u_form3;
 

Antworten