Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Form unload (https://www.delphipraxis.net/7340-form-unload.html)

Web-SZ 9. Aug 2003 19:29


Form unload
 
Hallo

Bin mal gespannt, welche Antworten mich hier erwarten. Hoffentlich nicht so wie bei der Konkurrenz!

Verstehe schon, dass diese Frage für viele einfach klingen mag, aber für mich nicht.

Ich habe ne Login-Form, ist das Passwort korrekt wird eine weitere Form geöffnet, nur die Login-Form sollte ganz verschwinden. Wenn man sie nicht aus den Speicher lassen kann, dann reicht auch verstecken

Hoffe, das krieg ich hier beantwortet :wink:


MFG Web-SZ

chris01 9. Aug 2003 19:32

Re: Form unload
 
Form1.Hide!!

Es geht aber auch

Form1.Close;

Web-SZ 9. Aug 2003 19:35

Re: Form unload
 
Beng!

Das hat gesessen! Wie gesagt sorry für die Frage, habe schon VB programmiert und habe mich irgendwie eh gewundert, dass man da kein hide hernehmen kann (bei delphi)

geht also doch :D


hab noch eine Frage: kann ich ohne zusätzliche Kompomenten die Buttons nicht farbig machen? habe Delphi 7 Enterprise

Danke für Infos

Super Board hier
najch drei min schon ne helfende Antwort


MFG Web-SZ



Edit: hm ne, bei close das hab ich erst auch probiert, nur der schließt gleich die ganze sache, also auch die nächste Form.

Web-SZ 9. Aug 2003 19:41

Re: Form unload
 
hm zufrüh gefreut! jetzt habe ich dafür das prob, dass wenn ich jetzt danach die zweite form schließe, er sie nur ausblendet, aber nicht richtig wieder ins code-fenster zurückkehrt. also er bleibt lam laufen ohne form


mfg web-sz

chris01 9. Aug 2003 19:50

Re: Form unload
 
Dann musst du das Login-Form nicht als Hauptform nehmen, sondern als 'neben' form!!

Du willst also das Programm gleichzeitig beenden??

Web-SZ 9. Aug 2003 20:08

Re: Form unload
 
also ich sehe schon, ich bin ein wenig unerfahren, besser gesagt noch zu viel an vb angewöhnt!

also kannst du mir mal erklären, wie du sowas machen würdest? das etwas nebenform wird, etc..

dann habe ich noch eine frage: bei mir ist es im moment so, wenn ich dir zweiten form sage, dass sie beim aufruf messages ausgeben soll, dann kommen diese schon vor der login-form hervor. das heißt dass alles schon mal geladen wird.

bitte erklär mir das genauer...

ich brauche ne login-form, und wenn alles richtig ist, dann sollte sie ausgeblendet (rausgeschmissen wäre mir lieber :D )und ne zweite form geladen werden. diese ist maximiert und hat ne timer-uhr, der sage ich, dass sie form3 aufrufen soll, die auf 800x600 angepasst ist. dann schalte ich die timer aus.

nur wäre da halt wichtig, dass form2 auch erst wirklich geladen wird, wenn ich es sage.


danke für deine hilfe und vielleicht melden sich ja noch welche


mfg web-sz

chris01 9. Aug 2003 20:13

Re: Form unload
 
Also, du kannst forms über form1.show anzeigen!!

Wenn Form2 jetzt das passwort logim ist, dann würde ich schreiben

Delphi-Quellcode:
if edit1.text = 'passwort' then
begin
  LogIn.Hide;
  Form3.show;
end;
Und so verschwindet das LogIn und Form3 wird angezeigt!!

Web-SZ 9. Aug 2003 20:22

Re: Form unload
 
achso du meinst, ich sollte eine form starten, diese zum beispiel maximiert, ihr per uhr sagen, dass sie login anzeigen soll und timer wieder disabeln.

und danach sage ich der login dass sie bei richtig verschwinden soll und form3 reinladen soll.


meine frage/poroblem: ich sage der timer sie sollte login.show machen und dann sage ich timer1.enabled:=false;

nur der macht das nicht und macht lsutig weiter

nebeneffekt könnt ihr euch dann ja ausmalen :cry:


danke für weitere hilfe

chris01 9. Aug 2003 20:26

Re: Form unload
 
Dann mach doch statt den Timer in die Create-Funktion von Form1 (Doppelklick auf Form1, entwicklungsumgebung), dass er LogIn.Show und Form3.show machen soll!!

Dann kann man sich den Timer sparen!!

urs.liska 13. Aug 2003 21:30

Re: Form unload
 
Du solltest auf jeden Fall 3 Forms haben:
Form1 (Hauptformular der Anwendung)
Form2 (LoginFormular)
Form3 (Arbeitsfenster)
Form2 und Form3 weist Du im OI visible = false zu.

In den Projektoptionen soll stehen, dass Formulare 1 und 3 automatisch erzeugt werden und Form1 das Hauptfenster ist.

Im Ereignis OnShow der Form1 rufst Du Form2.ShowModal auf.
Dort weist Du (je nach Erfolg des Login) Form2.ModalResult den Wert mrOK oder mrCancel zu, dadurch wird das Fenster geschlossen. (Dazu kann ich nichts genaueres sagen, weil ich nicht weiß, wie Dein Login funktioniert).
Delphi-Quellcode:
var loginForm: TForm;
begin
  loginForm := TForm2.Create(Application);
  if Form2.ShowModal = mrOK
     then
     begin
       Form2.FreeAndNil;
       Form3.Show
     end
     else Form1.Close;
end;
Was passiert?
1. Form1 und Form3 werden erzeugt (d.h. speicher reserviert und der ganze kram. Das siehst Du auch in der 'Projekt'.dpr-Datei vor Application.Run.
2. Form1 (als Hauptformular) wird angezeigt. Dann wird OnShow ausgelöst.
3. In OnShow erzeugst Du eine Instanz des Loginfensters und zeigst es mit ShowModal an. Das heißt, dass das Fenster im Vordergrund bleibt (d.h. man nichts anderes in der Anwendung gleichzeitig machen kann).
Wenn der Loginvorgang erfolgreich war (mrOK), wird Form2 befreit (und ist dann auch nicht mehr im Speicher) und Form3 angezeigt, in der wohl die eigentliche Arbeit des Programms abläuft.
Wenn der Login fehlgeschlagen ist, wird Form1 geschlossen.
Wenn Du das Hauptformular einer Anwendung schließt, wird die Anwendung beendet.

Ich hoffe, das hat es klarer gemacht
MFG
Urs

P.S. Timer oder sowas brauchst Du auf jeden fall nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:36 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