Du könntest dir auchn Knopf an die Backe nähen...
Da gesagt wurde, dass es für ein Chatprogramm ist, kann man wohl davon ausgehen, dass das ganze später noch verwendet werden muss
Projektsource:
Delphi-Quellcode:
program Formulare;
uses
Forms,
Main in 'Main.pas' {MainForm},
chat in 'chat.pas' {ChatForm};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TMainForm, MainForm); // ChatForm nicht erstellen!
Application.Run;
end.
So nun vom MainForm
Delphi-Quellcode:
uses Chat
type PChatForm = ^ChatForm; // ein Pointer auf das Formular
type
TMainForm = class(TForm)
...
public
FormListe: TList; // Eine Liste, in der die Pointer auf die Formulare gespeichert werden
ChatPointer: PChatFormForm; // Eine Pointervariable (Definition oben)
Wenn du jetzt ein Formular erzeugen willst, musst du folgendes machen:
Delphi-Quellcode:
procedure TMainForm.CreateButtonClick(Sender: TObject);
begin
GetMem(ChatPointer, SizeOf(TChatForm)); // An Adresse Speicher fürs Formular bereitstellen
ChatPointer^ := TChatForm.Create(Self); // ChatForm erzeugen
FormListe.Add(ChatPointer); // fügt den Pointer zur Liste hinzu
end;
Der Zugriff auf eines der Formulare geschieh wie folgt:
Delphi-Quellcode:
ChatPointer := FormListe[Integer]; // Pointer auf ein Formular richten
ChatPointer^.Caption := EditFormCaption.Text;
Da du den ganzen Speicher selber reserviert hast, musst du ihn auch wieder freigeben.
Delphi-Quellcode:
var
i: Integer;
begin
for i := 0 to FormListe.Count-1 do
begin
ChatPointer := FormListe[i];
ChatPointer^.Hide; // Sicherheitshalber aufrufen, da es sonst zu Fehlern kommen kann
ChatPointer^.Free;
FreeMem(ChatPointer, SizeOf(TChatFormForm)); // Speicher wieder freigeben
end;
FormListe.Free;
Das waren so die trockenen Befehle.
Nun denn, da du darauf nicht selber gekommen bist, nehme ich an, dass du dich noch nicht mit dem Thema "Pointer" beschäftigt hast. Dazu würde ich dir nun raten (Ausnahme: Du willst ein CnP-Prog), dich damit intensiv zu beschäftigen. Ist anfangs schwierig zu verstehen (wozu auch selbstständiges Beherrschen gehört), aber für dein Programm unabdingbar. Hier im Forum wirst du einiges dazu finden.