AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamisches Formular

Ein Thema von undertaker · begonnen am 6. Jun 2004 · letzter Beitrag vom 6. Jun 2004
Antwort Antwort
undertaker

Registriert seit: 10. Feb 2004
2 Beiträge
 
#1

Dynamisches Formular

  Alt 6. Jun 2004, 12:24
Ich bin dabei ein Chatprogramm zu entwickeln, in dem es auch möglich sein soll einen privatchat zu öffnen. Da ich nicht weiß, wie viele privatchats ein user aufmacht, sollen die Formulare dafür dynamisch erstellt werden. Ich hab mich hier im Forum mal umgesehen und zwei Lösungen gefunden, die aber beid noch nicht so funktionieren, wie ich es mir wünsche.

Lösung 1 (aus der Code-Libary):


Code:
initialization
   RegisterClass(TMeinFormular66);
end;
Code:
function CreateComponentByClassName(const name:string; AOwner:TComponent):TComponent;
begin
   // Sollte die Klasse mit dem Namen "name" nicht registriert worden sein,
   // dann wird in FindClass eine Exception ausgelöst
   Result := TComponentClass(FindClass(name)).Create(AOwner);
end;
Code:
var
   newform : TForm;
begin
   newform := CreateComponentByClassName('TMeinFormular66', nil) as TForm;
   newform.ShowModal; // anzeigen
   newform.Free; // und wieder vernichten
end;
Hierbei hab ich probleme mit dem initialization, ich habs ganz am ende meiner unit gesetzt damit es überhaupt lief, aber ich sollte auch TMainformular66 deklarieren und ich weiß nicht wie.

Die zweite Lösung (die ich etwas einfacher finde):
Code:
procedure TclientForm.pchatBitBtnClick(Sender: TObject);
var
   NF: TForm;

   procedure dOnClick(self: TObject; Sender: TObject);
   begin
         showmessage('test');
         editprivat.text:='test'; //funktioniert nicht
         NF.Close;                //funktioniert nicht
   end;


begin
  NF := TForm.Create (Self);
  NF.show;
with Tedit.Create(NF) do
begin
parent := NF;
name:='editprivat';
caption := 'lalalalei';
end;
with Tbutton.Create(NF) do
begin
parent := NF;
caption := 'test';
      top:=100;
      height:=25;
      width:=80;
      name:='button' + inttostr(privatchats);
      mtdbtn.Code := @dOnClick;
      mtdbtn.Data := Self;
      OnClick := TNotifyEvent(mtdbtn);

end;

end;
Ich habe hier das Problem, das ich nicht weiß, wie ich auf das erstelle editfeld zugreifen kann um zB den Text zu ändern. Ich kann ja auch mehrere instanzen dieses Formulares öffenen, aber wie unterscheide ich die vom Hauptprogramm aus? Außerdem bekomme ich eine Fehlermeldung, wenn ich die Form schließen (NF.close) oder frei machen will (NF.free).
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Dynamisches Formular

  Alt 6. Jun 2004, 12:29
Du kannst das Chatfenster auch zur entwurfszeit erstellen, und dann beliebg viele solcher Formulare zur Laufzeit erstellen.
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
undertaker

Registriert seit: 10. Feb 2004
2 Beiträge
 
#3

Re: Dynamisches Formular

  Alt 6. Jun 2004, 21:06
Ich hab das Formular ja durch NF := TForm.Create (Self); zur Laufzeit erstellt, nur weiß ich jetzt net, wie ich vom Hauptformular darauf zugreifen kann, besonders weil ich ja mehrere Instanzen starten kann.
  Mit Zitat antworten Zitat
BKempf

Registriert seit: 1. Jun 2004
103 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Dynamisches Formular

  Alt 6. Jun 2004, 21:12
Zitat von undertaker:
Ich hab das Formular ja durch NF := TForm.Create (Self); zur Laufzeit erstellt, nur weiß ich jetzt net, wie ich vom Hauptformular darauf zugreifen kann, besonders weil ich ja mehrere Instanzen starten kann.
Du koenntest dir Referenzen auf die einzelnen Formulare z.B. in einer TObjectList merken. NF enthaelt ja hoechstens eine Referenz auf die zuletzt erzeugte Instanz, das kannst du nicht verwenden, wenn du ein anderes Formular ansprechen willst.
The problem with troubleshooting is that sometimes the trouble shoots back.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:18 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