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.