Autor Beitrag
wurzel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 75

Win 2000, Win XP
BDS 2006 (Delphi, Delphi .NET, C++)
BeitragVerfasst: Do 04.01.07 11:21 
Hallo, möchte einen Chat proggen, der wie ICQ funzt. Ich logg mich ein und erhalte dann eine Liste aller aktuell angemeldeten User. Jetzt kommt aber das Problem, dass ich will, dass man mit einem Doppelklick auf einen User macht, sich dann ein neues Fenster öffnet und man dann ein Memofeld(Verlauf), ein Editfeld(Text) und einen Button(Senden) hat. Und das soll auch mit mehrern Usern funzen. Hab dann also Form1 mit einer Listbox aller User, die Online sind. Dann soll Form n für n User erscheinen


Moderiert von user profile iconChristian S.: Topic aus Internet / Netzwerk verschoben am Do 04.01.2007 um 11:24

_________________
"Könntest du deinen Egotrip mal kurz unterbrechen? Es ist was wichtiges passiert." - "Wenn es irgendwas wichtigeres als mein Ego gibt, verlange ich, dass man es auf der Stelle verhaftet und erschießt."


Zuletzt bearbeitet von wurzel am Fr 05.01.07 10:36, insgesamt 1-mal bearbeitet
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: Do 04.01.07 11:29 
Dann erzeuge einfach zur Laufzeit die entsprechenden Forms und zeigst sie an:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var
  NewForm: TChatForm;
begin
  NewForm := TChatForm.Create(Self);
  NewForm.Name = 'Test';
  NewForm.Show;
end;

Das ChatForm erzeugst du schon zur Designzeit (Unit 2 z.B.) und da kommt dann der Button, das Edit, usw. drauf. Wenn dein Chat dann läuft und einer klickt auf einen User, dann leitest du ein neues Form von diesem ChatForm ab. Dazu noch ganz oben bei Uses Unit2 eintragen, wenn dein ChatForm in Unit2 ist. Der Name des neuen Forms (NewForm.Name) muss jedesmal anders sein. Du könntest z.B. den Namen des Users verwenden.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
wurzel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 75

Win 2000, Win XP
BDS 2006 (Delphi, Delphi .NET, C++)
BeitragVerfasst: Fr 05.01.07 09:53 
Also, bei mir sieht das jetzt so aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.ClientsDblClick(Sender: TObject);
  var
    i: Integer;
    Text: String;
    NewForm: TForm2;
begin
  i := Clients.ItemIndex; // ausgewählten Eintrag bestimmen
  if (i > -1) then begin // gültig?
    NewForm := TForm2.Create(Self);
    NewForm.Caption := Clients.Items[i];
    NewForm.Name := Clients.Items[i];    
    NewForm.Show;
  end;
end;


Aber wenn ich dann das Fenster schließe und dann wieder ein Doppelklick auf den selben Nick mache, dann sagt er, dass es diesen Namen schon gibt. hab in Form2 eingetragen, dass es beim Schließen den Namen
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm2.FormDestroy(Sender: TObject);
begin
  Form2.Name := '';
end;
annehmen soll, aber das funzt net, also denke ich mal, dass ich das irgendwie im Form1 machen muss. Nur wie und wo?

_________________
"Könntest du deinen Egotrip mal kurz unterbrechen? Es ist was wichtiges passiert." - "Wenn es irgendwas wichtigeres als mein Ego gibt, verlange ich, dass man es auf der Stelle verhaftet und erschießt."
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: Fr 05.01.07 09:59 
Schreib mal das in OnClose des 2. Forms in Unit2:
ausblenden Delphi-Quelltext
1:
Free;					


Alternative (weiß nicht, was sauberer ist):

ausblenden Nach '... NewForm.Name ...'
1:
NewForm.FreeOnRelease;					

ausblenden In OnClose, satt Free;
1:
Release;					

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
wurzel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 75

Win 2000, Win XP
BDS 2006 (Delphi, Delphi .NET, C++)
BeitragVerfasst: Fr 05.01.07 10:06 
Ne, sorry, funzt leider immernoch net, die selbe Fehlermeldung

_________________
"Könntest du deinen Egotrip mal kurz unterbrechen? Es ist was wichtiges passiert." - "Wenn es irgendwas wichtigeres als mein Ego gibt, verlange ich, dass man es auf der Stelle verhaftet und erschießt."
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: Fr 05.01.07 10:08 
Hast du es in OnClose (OnDestroy geht hier nicht)? Auch mal meinen Alternativ-Vorschlag ausprobiert? Das von dir (Name := '') aus OnDestroy rausgenommen?

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
wurzel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 75

Win 2000, Win XP
BDS 2006 (Delphi, Delphi .NET, C++)
BeitragVerfasst: Fr 05.01.07 10:14 
Hab jetzt OnClose. Jetzt funzt es zwar, wenn ich nickname3 bin, kann ich zwar mein Fenster öffnen und schließne und wieder öffnen, aber ein anderes fenster geht nicht, z.bsp.: von Nickname 1

{{Edit: Hab beides ausprobiert, Free und Release

_________________
"Könntest du deinen Egotrip mal kurz unterbrechen? Es ist was wichtiges passiert." - "Wenn es irgendwas wichtigeres als mein Ego gibt, verlange ich, dass man es auf der Stelle verhaftet und erschießt."
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: Fr 05.01.07 10:21 
Dann fällt mir nur noch die Methode ein, dass du dir ein Array of TForm2 anlegst. Dann kannst du die ingesamt auch leichter verwalten.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
wurzel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 75

Win 2000, Win XP
BDS 2006 (Delphi, Delphi .NET, C++)
BeitragVerfasst: Fr 05.01.07 10:24 
Habs jetzt aber ^^. Hab das NewForm.FreeOnRelease; weggelassen, und es funzt einfach. Man darf nur net Nickname heißen, dann funzt alles ^^. Aber danke schön, vielen Dank :flehan:

_________________
"Könntest du deinen Egotrip mal kurz unterbrechen? Es ist was wichtiges passiert." - "Wenn es irgendwas wichtigeres als mein Ego gibt, verlange ich, dass man es auf der Stelle verhaftet und erschießt."