Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Ein Chat und beliebig viele Formulare (https://www.delphipraxis.net/7164-ein-chat-und-beliebig-viele-formulare.html)

Holger 4. Aug 2003 14:17


Ein Chat und beliebig viele Formulare
 
Hallo zusammen.... ich weiss noch recht wenig was die Programmierung mit Delphi betrifft... und versucher derzeit einen Chat zu programmieren... die Idee ist das ähnlich wie bei ICQ etc. für jeden neuen Chat mit einem Client auch ein neues Fenster geöffnet wird.

Mit diesem Quelltext :
Delphi-Quellcode:
procedure TChat.NewForm(I : Integer; S : String); // I = Nummer des Forms S = Nummer des Clients
Var aForm: TForm;
    aRichedit : TRichEdit;
    aMemo : TMemo;
    aButton : TButton;
    aClientSocket : TClientSocket;
begin
  aForm := TForm.Create(Self);
  with aForm do
      begin
        Name := 'Form'+IntToStr(I );
        Width := 475;
        Height := 440;
        Caption := 'chat' + S;
        Visible := True;
        Form[i] := aForm;
      end;

    aRichEdit := TRichEdit.Create(Self);
  with aRichEdit do
      begin
        Name := 'RichEdit'+IntToStr(I );
        Parent := aForm;
        Left := 1;
        Top := 0;
        Height := 241;
        Width := 465;
        RichEdit[i] := aRichEdit;
      end;

    aMemo := TMemo.Create(Self);
  with aMemo do
      begin
        Name := 'Memo'+IntToStr(I );
        Parent := aForm;
        Left := 1;
        Top := 264;
        Height := 97;
        Width := 465;
        Memo[i] := aMemo;
      end;

    aClientSocket := TClientSocket.Create(Self);
  with aClientSocket do
      begin
        Name := 'ClientSocket'+IntToStr(I);
        Port := 6713;
        Host := '127.0.0.1';
        ClientSocket[i] := aClientSocket;
      end;

    aButton := TButton.Create(Self);
  with aButton do
      begin
        Name := 'BtSend'+IntToStr(I );
        Parent := aForm;
        Left := 416;
        Top := 376;
        Height := 30;
        Width := 49;
        OnClick := SocketSend;
        BtSend[i] := aButton;
      end;
end;
Erzeuge ich mein Chatfenster sowie eine neue Clientkomponnete...

Das problem das ich habe ist nun das Onclickereignis auf den Button... Da all diese Komponneten ja erst existiern wenn ein chat zumm client aufgebaut wurde habe ich mir überlegt diese über ARRAYS anzusprechen.... das problem ist jetzt bloss das ich ja wissen muss vom welcher Button der OnClick kam damit ich weiss in welches ArrayFeld ich springen muss um dann den richtigen ClientSocket sowie die Memokomponnente auslesen zu können. Gibt es eine möglichkeit nicht nur die Komponnenten sondern auch eine Prozedur dynamisch zu erzeugen? Oder einen viel einfacheren Weg dynamisch neue Forms zu erzeugen ?

Schon mal danke im voraus

Holger

Helld_River 14. Aug 2003 12:54

Re: Ein Chat und beliebig viele Formulare
 
Hi !
Warum erzeugst Du dir das komplette Formular nicht zur Design-Zeit, nimmst es aus der Liste der automatisch erzeugten Formulare (Menü: Projekt-->Optionen-->Reiter: Formulare) raus und erzeugst es einfach, wenn Du es benötigst:
Delphi-Quellcode:
try
  NewForm := TNewForm.Create(self);
  NewForm.Show;
finally
  NewForm.Free;
end;
Das müsste doch dem entsprechen, was Du versuchst so super kompliziert zum machen.

Es könnte noch Probleme geben, wenn Du für jedes Form die gleiche Variable benutzt. Das kann man aber umgehen, indem Du dir ein Array machst:
Delphi-Quellcode:
var
  myForms : array[1..10] of TForm;
Hoffe, das hilft dir weiter.

Gruß, Helld

S - tefano 14. Aug 2003 14:08

Re: Ein Chat und beliebig viele Formulare
 
Hi,

Um es noch mehr ICQ- Like zu machen:

Delphi-Quellcode:
var
  myForms: array of TMyChatForm;
  formCount: integer;

{...}

procedure MachNeuForm;
begin
  inc(formCount);
  SetLength(myForms, formCount);
  myforms[formCount - 1]:= TMyChatForm.Create(self);
  myforms[formCount - 1].Show;
end;
So kannst du beliebig viele Fenster öffnen. So mach ich das bei meinem ChatProgramm auch (an dieser Stelle möchte ich die Präsentation im Freeware - Bereich für irgendwann demnächst ankündigen...), da funktionierts ganz gut.

Bis dann,

S - tefano

Flogo 10. Sep 2003 19:46

Re: Ein Chat und beliebig viele Formulare
 
Geht das auch irgendwie so, dass beim minimieren der Hauptform nicht alle Chatfenster mitminimiert werden?


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