Autor Beitrag
Xenomorph150
Hält's aus hier
Beiträge: 9

Win 2000
Delphi 7, VB 6.0
BeitragVerfasst: Sa 04.03.06 15:29 
Hi Leute,
ich habe zwei Forms für einen Chat.
Die erste Form die geladen wird, ist eine "Login Form", doch gibt man seine Daten an,
klickt Ok, und damit wird mit

Form_Chat.Show

der Chat angezeigt.

Nun möchte ich natürlich dass die Login Form im Hintergrund geschlossen wird, damit sie nicht stört.
Das geht jedoch blöderweise nicht! Mit Form_Login.close schließe ich nicht nur die Login Form,
sondern das ganze Programm schaltet sich ab!

Irgendwer ne Idee?
Danke schon mal im Vorraus!

Nico
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Sa 04.03.06 15:58 
Mach das Chatfenster in den Projektoptionen zum Hauptfenster.
Dann rufe in dessen Create das Login Fenster auf(am besten per Showmodal).
Dann werte gleich dahinter das Modalresult aus(gibt die Funktion zurück).
Setze im Loginform bei den Buttons die entsprechenden Modalresults.
Ironwulf
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: Sa 04.03.06 16:01 
oder verwend bei der ersten vorm
ausblenden Delphi-Quelltext
1:
Form1.Visible:= False					
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Sa 04.03.06 16:02 
Du kannst aber Form1.Visible nicht in Form1.OnShow verwenden!

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Xenomorph150 Threadstarter
Hält's aus hier
Beiträge: 9

Win 2000
Delphi 7, VB 6.0
BeitragVerfasst: Sa 04.03.06 16:18 
user profile icondigi_c hat folgendes geschrieben:
Mach das Chatfenster in den Projektoptionen zum Hauptfenster.
Dann rufe in dessen Create das Login Fenster auf(am besten per Showmodal).
Dann werte gleich dahinter das Modalresult aus(gibt die Funktion zurück).
Setze im Loginform bei den Buttons die entsprechenden Modalresults.


Geht leider nicht,
wenn ich das Chat dingen als Main mache,
und dann in dessen OnCreate Form_Login.Show
oder Form_Login.ShowModal mache,
kriege ich diesen netten hier:

Zugriffsverletzung bei Speicheradresse so und so in Modul Chat.exe, Lesen von Adresse so und so,
Prozess wurde angehalten...

O.o
reichemi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 41

WinXP home + prof, SUSE 9.2
Delphi 6
BeitragVerfasst: Sa 04.03.06 16:45 
hallo,

bei dir werden wahrscheinlich beide Forms automatisch erstellt. gehe dazu im menü unter Projekt > Optionen > Formulare und verschiebe die Form_Login nach rechts ("verfügbare formulare"). alternativ dazu kannst du auch deinen projekt-quelltext ändern, und dort folgende zeile löschen bzw. auskommentieren:

ausblenden Delphi-Quelltext
1:
Application.CreateForm(TForm_Login, Form_Login);					


dann kannst du im Form1.OnCreate() dein login form erstellen und anzeigen lassen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
uses Unit2;

// ...

procedure TForm1.FormCreate(Sender: TObject);
begin
  // ...

  Form_Login := TForm_Login.Create(nil);
  if Form_Login.ShowModal = mrOk then begin
    // Eingaben Auswerten, z.B. aus Form_Login.Edit1.Text o.ä.

    // Form_Login wieder entfernen
    Form_Login.Free;
  end
  else
    // wenn Login abgebrochen wird, ganze Anwendung beenden
    Application.Terminate;

  // ...
end;


wenn du ShowModal benutzt musst du aber beachten, dass du entweder bei deinem Form_Login den Parameter ModalResult setzen musst (z.B. mrOk oder mrCancel), oder bei den "OK" und "Abbrechen" Buttons (dann wird bei einem klick auf den button automatisch der wert von ModalResult beim Formular gesetzt und dieses damit geschlossen)