Wenn ich kapiert habe, was Du willst, dann mußt Du dem SubForm ein Property verpassen vom Typ TStringList z.B.
Vor dem Aufruf aus irgendeinem Form setzt Du dann dieses Property auf eine StringListe, die im aufrufenden Form definiert ist. Im Subform hast Du (z.B.) ein Memo, dessen Lines-Eigenschaft du das Property im OnShow zuweist. Beim Schließen des Subforms schreibst Du den Inhalt des Memos zurück in die StringList des Aufrufer. Damit beim nochmaligen Aufruf des aufgerufenen und angezeigten Subforms durch ein weiteres MainForm die bis dahin erfolgten Änderungen nicht überschrieben werden, prüfst Du vor dem Setzten des Property's ob es schon gesetzt ist - wenn ja, schreibst Du erst die Änderungen in das ursprüngliche MainForm zurück und übernímmst dann die Werte des neuen Aufrufers:
Delphi-Quellcode:
unit SubForm;
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,stdctrls;
type
TSubForm =
class(TForm)
private
FStringList : TStringList;
FMemo : TMemo;
protected
procedure SetStringList(Value : TStringList);
procedure FormHide(Sender: TObject);
public
constructor Create(AOwner: TComponent);
override;
property Text : TStringList
read FStringList
write SetStringList;
end;
implementation
constructor TSubForm.Create(AOwner: TComponent);
begin
inherited;
FStringList :=
nil;
FMemo := TMemo.Create(self);
with FMemo
do begin
Parent := self;
Left := 10;
Top := 10;
Width := 200;
Height := 200;
end;
end;
procedure TSubForm.SetStringList(Value : TStringList);
begin
if Assigned(FStringList)
then begin // wenn schon vorhanden, dann Änderungen zurückschreiben
FStringList.Assign(FMemo.Lines);
end;
FStringList := Value;
//zeigt jetzt auf Die neue StringListe
end;
procedure TSubForm.FormHide(Sender: TObject);
begin
if Assigned(FStringList)
then begin // Änderungen zurückschreiben
FStringList.Assign(FMemo.Lines);
end;
FStringList :=
nil;
// zeigt nun nirgendwohin
end;
Im Projekt mußt Du zentral das SubForm erzeugen und in den Aufrufenden Forms muß die Variable MeinSubForm initialisiert sein (Create) Angenommen, Du hast in einem MainForm die Variable MeinHilfeText(TStringList) erzeugt und gefüllt, dann erfolgt der Aufruf des Subforms folgendermassen:
Delphi-Quellcode:
procedure TMainForm.SchowSubForm;
begin
MeinSubForm.StringListe := MeinHilfeText; // weist dem SubForm Deinen Hilfetext zu;
MeinSubForm.Show;
end;
Du hast recht - ist etwas, was man öfter braucht. um so mehr verwundert Deine Frage - wie wär's mit 'nem Buch - zum Beispiel "Jetzt lerne ich Delphi"?
Gruß