Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#8

AW: WindowState ruft OnShow Ereignis auf?

  Alt 23. Mai 2015, 21:22
Weil ich da Dinge mache, die beim erneutem Laden meine Anwendung durcheinander bringen. Da muss ich wohl diese mit ner if-Abfrage schützen. Wie kann man prüfen, ob der Sender die procedure TMainForm.MinimizeMIClick(Sender: TObject); ist?
Ähnliche Probleme hatte ich früher auch schonmal. Inzwischen mach ich das so:

Im Oncreate werden alle benötigten Objekte erzeugt. Ebenfalls wird dort ein privater Boolean StartModus (Private-Abschnitt) auf True gesetzt.
In OnShow und in OnActivate frage ich diesen Boolean ab:
Delphi-Quellcode:
procedure TFormMain.Show(Sender: TObject);
begin
  if not StartModus then exit;

  MachSonstWas;
  DiesUndDas;
  ...
end;
Dasselbe in OnActivate. Dort wird dann, nachdem dort alles erledigt wurde, was zu erledigen ist, z.B. Verbindung mit der Datenbank herstellen usw., StartModus auf False gesetzt:
Delphi-Quellcode:
procedure TFormMain.Activate(Sender: TObject);
begin
  if not StartModus then exit;

  if not DatMod.VerbindenDatenbank Then
  begin
    ShowMessage('Verbindung mit der Datenbank fehlgeschlagen. Programm wird beendet.');
    Close;
  end;

  if not DatMod.VerbindenQueries Then
  begin
    ShowMessage('Verbindung mit der Queries fehlgeschlagen. Programm wird beendet.');
    Close;
  end;

  BenutzerLogin;

  EinstellungenLaden; // dort wird u.a. auch WindowState gesetzt, die Werte für die Einstellungen kommen aus der DB
  ...
  StartModus := False;
end;
Somit mußt du nichts prüfen außer dem Boolean StartModus, der sonst nirgendwo verwendet wird.
  Mit Zitat antworten Zitat