AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Lazarus (IDE) WindowState ruft OnShow Ereignis auf?
Thema durchsuchen
Ansicht
Themen-Optionen

WindowState ruft OnShow Ereignis auf?

Ein Thema von AlexII · begonnen am 23. Mai 2015 · letzter Beitrag vom 23. Mai 2015
Antwort Antwort
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#1

WindowState ruft OnShow Ereignis auf?

  Alt 23. Mai 2015, 20:49
Hallo,

ich habe folgenden Code, und dieser ruft automatisch das OnShow Ereignis des Forms auf. Ist das normal so? Für mich ist das aber voll ungünstig, kann ich das irgendwie umgehen, oder ist das eine schlechte Idee? Lässt sich vielleicht das Form anders kleiner machen, nicht so wie bei mir?

Delphi-Quellcode:
procedure TMainForm.MinimizeMIClick(Sender: TObject);
begin
  // MainForm minimieren
  if MainForm.WindowState = wsMaximized then
  begin
    MainForm.BorderStyle := bsSizeable;
    MainForm.WindowState := wsNormal;
    MainForm.Width := 800;
    MainForm.Height := 600;
  end else
  begin
    MainForm.BorderStyle := bsNone;
    MainForm.WindowState := wsMaximized;
  end;
end;
Danke!
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: WindowState ruft OnShow Ereignis auf?

  Alt 23. Mai 2015, 21:00
Muss es wohl zwangsweise, damit die neuen Eigenschaften wirksam werden. Warum ist es ungünstig für dich?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#3

AW: WindowState ruft OnShow Ereignis auf?

  Alt 23. Mai 2015, 21:07
Muss es wohl zwangsweise, damit die neuen Eigenschaften wirksam werden. Warum ist es ungünstig für dich?
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?
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: WindowState ruft OnShow Ereignis auf?

  Alt 23. Mai 2015, 21:15
Es gibt noch andere Möglichkeiten die Titelleiste zu entfernen als bsNone.
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#5

AW: WindowState ruft OnShow Ereignis auf?

  Alt 23. Mai 2015, 21:17
Es gibt noch andere Möglichkeiten die Titelleiste zu entfernen als bsNone.
Wie?
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: WindowState ruft OnShow Ereignis auf?

  Alt 23. Mai 2015, 21:19
Dann mach sie doch erst, wenn du sie neu lädst. Was meinst du eigentlich genau mit "neu laden"?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#7

AW: WindowState ruft OnShow Ereignis auf?

  Alt 23. Mai 2015, 21:22
Dann mach sie doch erst, wenn du sie neu lädst. Was meinst du eigentlich genau mit "neu laden"?
Bei erneutem Anzeigen (Show) meinte ich. ))
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
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
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#9

AW: WindowState ruft OnShow Ereignis auf?

  Alt 23. Mai 2015, 21:32
Wow... super Lösung, danke!
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz