Type
TMeinCallBack =procedure (Text : TStrings)
of object;
TMeinHilfsForm =
class(TForm)
private
FmemHelpText : TMemo;
FbtnClose : TButton;
FCallBack : TMeinCallBack;
FMeinCallBack: TMeinCallBack;
protected
procedure SetCallBack(Value:TMeinCallBack);
procedure HideAway(Sender : TObject);
public
constructor Create(AOwner: TComponent);
override;
destructor Destroy;
override;
property ReturnProc : TMeinCallBack
read FMeinCallBack
write SetCallBack;
procedure ShowWithText(Text:TStrings);
published
end;
TMeinMainForm =
class(TForm)
private
FbtnShowHelp : TButton;
FMeinHilfsForm: TMeinHilfsForm;
FMeinHilfstext : TStringList;
protected
procedure SaveHelpText(Text:TStrings);
virtual;
// kann in Nachfahren
// überschrieben werden
procedure ShowHelp(Sender:TObject);
public
constructor Create(AOwner: TComponent);
override;
destructor Destroy;
override;
property HelpWindow : TMeinHilfsForm
read FMeinHilfsForm
write FMeinHilfsForm;
published
end;
implementation
{ TMeinHilfsForm }
constructor TMeinHilfsForm.Create(AOwner: TComponent);
begin
inherited;
FmemHelpText := TMemo.Create(self);
// Werte setzen (Größe usw.)
FbtnClose := TButton.Create(self);
// Werte setzen (Größe usw.)
FbtnClose.OnClick := HideAway;
end;
procedure TMeinHilfsForm.HideAway(Sender : TObject);
begin
if Assigned(FCallBack)
then FCallBack(FmemHelpText.Lines);
FCallBack :=
nil;
self.Hide;
end;
procedure TMeinHilfsForm.SetCallBack(Value:TMeinCallBack);
begin
if Assigned(FCallBack)
then FCallBack(FmemHelpText.Lines);
FCallBack := Value;
end;
procedure TMeinHilfsForm.ShowWithText(Text: TStrings);
begin
if Assigned(FCallBack)
then begin
FmemHelpText.Lines.Assign(Text);
self.Show;
end else raise Exception.Create('
Keine CallBack-Prozedur angegeben!'#13#10+
'
Bitte vor Aufruf von ShowWithText '+
'
das Property ReturnProc setzen!');
end;
destructor TMeinHilfsForm.Destroy;
begin
FreeAndNil(FmemHelpText);
FreeAndNil(FbtnClose);
inherited;
end;
{ TMeinMainForm }
constructor TMeinMainForm.Create(AOwner: TComponent);
begin
inherited;
FbtnShowHelp := TButton.Create(self);
FbtnShowHelp.OnClick := ShowHelp;
FMeinHilfstext := TStringList.Create;
FMeinHilfstext.Text := '
Das ist mein Hilfetext!';
end;
procedure TMeinMainForm.SaveHelpText(Text: TStrings);
begin
FMeinHilfstext.Assign(Text);
end;
procedure TMeinMainForm.ShowHelp(Sender: TObject);
begin
if Assigned(FMeinHilfsForm)
then begin
FMeinHilfsForm.ReturnProc := SaveHelpText;
FMeinHilfsForm.ShowWithText(FMeinHilfstext);
end;
end;
destructor TMeinMainForm.Destroy;
begin
FreeAndNil(FbtnShowHelp);
FreeAndNil(FMeinHilfstext);
inherited;
end;