Auf Minimieren eines Formulars reagieren
-
Hi,
ich habe in meinem Projekt ein Hauptformular und ein Benutzer öffnet im Verlauf der Anwendung ein weiteres Formular nach dem er ein Kenn- und Passwort eingegeben hat modal.
Kann ich darauf reagieren wenn jemand 1. das modal geöffnete Formular minimiert oder 2. eine andere Anwendung den Focus erhält?
Wenn es dann wieder den Focus erhält oder maximiert wird, möchte ich eine erneute Passwortabfrage vornehmen bevor um das Formular erneut zu zeigen.
Hoffe auf gute Anregungen und evtl. Beispiele.
Danke fürs Lesen.Gruß euer Formierer
-
Dafür kannst du TApplication::OnActivate benutzen. Am einfachsten geht's mit der ApplicationEvents-Komponente (zweiter Reiter der Komponentenpalette).
-
Hallo,
es klappt so weit nicht schlecht. Ich nehme sobald das Formular minimiert wird die Bordericons aus dem Formular heraus.
Wenn das Formular dann wieder angeklickt wird muss ein Passwort eingegeben werden um es wieder maximieren zu können.Wenn das Formular allerdings minimiert ist und ich klicke die blaue Leiste oben doppelt an wird das Formular trotzdem maximiert.
Gib es andere Möglichkeiten, oder kann diesem entgegengewirkt werden?
Hier noch zur Info der Code:
//--------------------------------------------------------------------------- void __fastcall TForm1::ApplicationEvents1Activate(TObject *Sender) { AnsiString ansitemp = ""; if (WindowState == wsMinimized) { if (InputQuery("Autorisierungprüfung","Bitte geben sie das Passwort ein.",ansitemp)) { if (ansitemp == "Passwort") { WindowState = wsNormal; TBorderIcons tempBI = BorderIcons; tempBI << biMaximize; tempBI << biMinimize; tempBI << biSystemMenu; BorderIcons = tempBI; } else { ShowMessage("Sie haben das falsche Passwort eingegeben.\nBitte wiederholen sie die Eingabe."); } } } } //--------------------------------------------------------------------------- void __fastcall TForm1::ApplicationEvents1Deactivate(TObject *Sender) { if (WindowState == wsMinimized) { TBorderIcons tempBI = BorderIcons; tempBI >> biMaximize; tempBI >> biMinimize; tempBI >> biSystemMenu; BorderIcons = tempBI; } } //---------------------------------------------------------------------------
Gruß Formierer
-
wenn das Formular minimiert ist, we kannst du denn auf die blau Leiste oben doppelt klicken???
-
Servus
--- schrieb:
wenn das Formular minimiert ist, we kannst du denn auf die blau Leiste oben doppelt klicken???
Das maßgebliche Formular ist nicht das Hauptformular und wird somit über der Symbolleiste auf dem deskop dargestellt.
Tschö mit ö
-
erstelle doch eine zweite form und wennd as fenster minimiert ist rufst du die 2 form modal auf.
das könnte doch funktionieren.
Aber mal was anderes, kann man in inputquery auch paswordchar festlegen wie bei einem edit.
ciao zani1303
-
1. was istn dass fürn blöder vorschlag (was soll dass mit der 2. Form???)
2. mach für deine frage einen neuen thread auf, dass hat nix mit diesem thema hier zu tun
-
Jester2000:
1. Immer locker bleiben.
2. Die Moderation bitte den Moderatoren überlassen.Formierer:
Wie wär's damit?void __fastcall TForm1::ApplicationEvents1Activate(TObject *Sender) { String pass = ""; bool ok = InputQuery("Abfrage", "Passwort:", pass); if (ok && pass == "123") { Application->Restore(); Form2->WindowState = Form2->Tag; } else Application->Minimize(); }
Ohne OnDeactivate, der WindowState wird im OnCanResize von Form2 gespeichert.
Bedenken solltest du auf jeden Fall, dass, wenn der Passwortstring im Klartext im Sourcecode steht, dieser String auch im Klartext in der fertigen Exe steht.
-
Hi
danke für die Antworten, besonders für die Letzte.
Ich habs jetzt noch ein bischen anders gemacht, ich mach das Formular unsichtbar und auf Activate kommt der PasswortDialog (mit * als extra Formular), falls Passwort korrekt wird Formular wieder sichtbar.Gruß an alle Helfenden