Entwickler-Ecke

Sonstiges (Delphi) - Programm close problem


XPert - Di 22.10.02 19:47
Titel: Programm close problem
HI!
ich hab da mal wieder #n problem....
ich hab ein programm geschrieben, was den startbutton kontolliert!
wenn man es schliessen will kommt eine InputBox. wenn ich das richtige passwort eingebe, soll alles geschlossen werden, wenn falsches passwort dann soll nicht geschlossen werden!
kapiert?
na dann postet... :wink:


DeCodeGuru - Di 22.10.02 19:53

Zitat:
wenn man es schliessen will kommt eine InputBox. wenn ich das richtige passwort eingebe, soll alles geschlossen werden, wenn falsches passwort dann soll nicht geschlossen werden!


was will jemand schließen? Was soll alles geschlossen werden?

Zitat:
kapiert?


Dreimal darfst du raten :wink:


XPert - Di 22.10.02 19:56

mit alles meine ich form1 und form2


XPert - Di 22.10.02 20:00

oder kann man das schliessen vielleicht ganz verhindern?
das wäre ja :beer:


Delete - Di 22.10.02 20:51

Du willst uns erzählen, du hast es geschafft, den Startbutton zu deaktivieren und scheiterst aber an so einen trivialen Grundlagenproblem? :shock:

if und = sollten dir weiter helfen. Letzendlich läuft es doch auf einen simplen Stringvergleich hinaus.

Und wie man verhindert, dass die Form geschlossen werden kann, solltest du selber rausfinden, wenn du dir mal die Ereignisse von der Form ankuckst. Besonders interessant sind die Ereignisse, bei denen ...Close... im Namen vor kommt.


DeCodeGuru - Di 22.10.02 20:53

Zitat:
Und wie man verhindert, dass die Form geschlossen werden kann, solltets du selber rausfinden, wenn du dir mal die Ereignisse von der Form ankuckst. Besonders interessant sind die Ereignisse, bei denen ...Close... im Namen vor kommt.


Noch genauer kannst du es auch nicht mehr schreiben :mrgreen:


Tino - Di 22.10.02 21:02

Beim tForm gibt es das Event OnCloseQuery. Dieses Event könntest Du in etwa so benutzen:

Quelltext
1:
2:
3:
4:
5:
procedure Tform1.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
  CanClose := False;
end;


Gruß
TINO


Maggi - Mi 23.10.02 07:45

Tach,

ich versuche einmal die Antwort von Tino zu erweitern (nein, wie anmaßend :wink: ):

Das mit der OnCloseQuery ist schon der richtige Ansatz, du fragst dann einfach bei der Passwortabfrage den String ab den du erwartest und setzt dann die BooleanVar (z.B. CanClose) die du dir vorher gebaut hast auf True und sagst close. Dann sollte dein Proramm sich schließen lassen sonst nicht.

Ach ja du solltest die CanClose natürlich vorher mit False initialisieren!!!

Gruß

Maggi


Hagbard Celine - Mi 23.10.02 08:00

Hab da mal ne Frage die deine nicht beantwortet, aber wohl auch ganz nett ist!

Wie hast Du den start button deaktiviert???


Tino - Mi 23.10.02 08:30

Maggi hat folgendes geschrieben:
ich versuche einmal die Antwort von Tino zu erweitern

Sorry, hatte wohl nicht die ganze Frage gelesen. Danke das Du es weiter erklärt hast.

Gruß


Delete - Mi 23.10.02 08:42

Hagbard Celine hat folgendes geschrieben:
Wie hast Du den start button deaktiviert

Der EDH hält diese Möglichkeit bereit:

Quelltext
1:
2:
EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd',nil),
  0,'Button',nil),TRUE{FALSE});

Dein Dank gilt bitte dem, leider nicht genannten, Verfasser dieses Beitrags.

Nachtrag: Ich nehme jedweden "Spaßvögeln" nur ungern die Illusion. Aber mit einer WIN-Taste auf dem Keyboard, bzw. mit der Tastenkombination STRG+ESC ist man vor jeglichem Unsinn sicher und kann das Startmenü dennoch aufrufen.

Luckie hat folgendes geschrieben:
Du willst uns erzählen, du hast es geschafft, den Startbutton zu deaktivieren und scheiterst aber an so einen trivialen Grundlagenproblem?

Ich bitte um Verzeihung, Luckie, aber es sind meist gerade die einfachen Dinge, auf die man nicht mehr kommt, weil man sich zu sehr in anderen Sachen verbissen hat.
Es gibt da dieses schöne Klischee vom Wissenschaftler, der zwar die Zahl Pi auf tausend Nachkommastellen im Kopf berechnen kann, aber zu dusselig ist, sich eine Suppe zu kochen. (Ich kann übrigens beides nicht :wink:)


Delete - Mi 23.10.02 11:56

OK, dann nehme ich alles wieder zurück. Komisch kommt es mir allerdings immer noch vor.

Na so ne Tütensuppe bekommst du doch wohl noch hin oder? Was meinst du wo von ich mich so ernähre, seit ich ausgezogen bin. :x


Udontknow - Mi 23.10.02 12:03

Zitat:
Du willst uns erzählen, du hast es geschafft, den Startbutton zu deaktivieren und scheiterst aber an so einen trivialen Grundlagenproblem?


In manchen Foren wird so etwas das "Bastler"-Syndrom genannt... :wink:


XPert - Mi 23.10.02 16:19

ich mache das mit dem startbuttom über die kompo abfStartButton!


Delete - Mi 23.10.02 17:12

Mit einer Komponente? Obwohl der Code zum Deaktivieren gerade mal eine Zeile lang ist? :?

Was ist denn da noch dabei?
Wenn die Komponente auch nicht mehr macht als der Beispielcode aus dem EDH, dann würde ich nämlich sagen: das ist in etwa so witzlos wie diese Manifest-Komponente von Delphi 7.


XPert - Mi 23.10.02 18:19

die kompo kann alle möglichen einstellungen vornehmen.... bild und schrift layout(größe, form) ändern! in farbe größe schriftart...... ob enabled oder nicht ob visible oder nicht :twisted:

probleme damit? :wink:


Udontknow - Do 24.10.02 07:59

@MathiasSimmack:

Was denn? Ich habe noch nie einen sauberer geschriebenen TComponent-Nachfahren gesehen.


Delete - Do 24.10.02 08:14

Wie: was denn? Den Inhalt der Komponente habe ich mir nicht angesehen.

Ich wollte nur wissen, was an ihr noch "dran" oder "drin" ist, weil der Code zum Deaktivieren des Start-Buttons im Prinzip nur eine Zeile lang ist. Der zum Verstecken basiert auf dem selben Prinzip:

Quelltext
1:
2:
ShowWindow(FindWindowEx(FindWindow('Shell_TrayWnd',nil),
    0,'Button',nil),SW_HIDE {SW_SHOW});


Außerdem, ich sag´s noch mal:
Wer eine WIN-Taste auf dem Keyboard hat, oder die Kombi STRG+ESC benutzt, der kriegt das Startmenü trotzdem auf - egal ob der Button deaktiviert oder unsichtbar ist.


Udontknow - Do 24.10.02 11:48

Die Komponente noch nicht angesehen? Machs mal. Das ist so klar geschrieben, einfach toll! :mrgreen: