Hi,
ich habe mal etwas rumexperimentiert und eine wesentlich einfachere und bessere Methode herausgefunden. Bei den ersten uses im Hauptformular wo also Windows, Messages usw. eingebunden ist füge ich einfach den Komponentennamen noch hinzu:
, editor_miro
wobei editor_miro der Name des Forms ist.
Anschließend lege ich die Objektvariable nicht nur lokal an, da wo ich vorher das Fenster geöffnet habe, sondern Superglobal, also in die var-Liste noch vor "implementation"
EditorMOD : TEditor_MOD;
Das öffnen der Fenster bleibt identisch, nur habe ich halt keine var mehr lokal gebraucht, da diese Superglobal besteht also aus
Delphi-Quellcode:
procedure ...;
var EditorMOD: TEditor_MOD;
begin
EditorMOD := TEditor_MOD.Create(self);
EditorMOD.Caption := 'CBACK MIRO - Mod Editor';
EditorMOD.Show;
end;
wurde nun
Delphi-Quellcode:
procedure ...;
begin
EditorMOD := TEditor_MOD.Create(self);
EditorMOD.Caption := 'CBACK MIRO - Mod Editor';
EditorMOD.Show;
end;
Soo und im Editorfenster die Prozedur sieht nun einfach so aus:
Delphi-Quellcode:
procedure AddAction(action:string);
begin
EditorMOD.MiroEdit.SelText := #13#10 + '#' + #13#10 + '#-----[ ' + action + ' ]------------------------------------------'+ #13#10 + '#' + #13#10;
EditorMOD.MiroEdit.SetFocus;
end;
So kann ich diese Prozedur nun auch nutzen wenn mehrere Fenster geöffnet werden und es wird auch im richtigen Fenster zugeordnet. Ich brauche also kein Array, keine Liste, nix. Also die einzige Änderung ist, das Objekt für die Multi-Fenster nicht lokal, sondern Superglobal anzulegen, wie beispielsweise das beim Hauptformular von Delphi gemacht wird.