Ein
class helper
oder eine CrackerKlasse haben beide allerdings Nachteile: Die Wirkung ist nicht mehr gesteuert sondern gilt für alle betroffenen Klassen (in diesem Bereich).
Nehmen wir mal als Beispiel, dass du in einer TListBox eine Datei anzeigen möchtest und eben den Dateinamen dir merken möchtest, dann würde ich folgenden Ansatz bevorzugen:
Delphi-Quellcode:
unit TextFilePresenter;
interface
uses
StdCtrls;
type
TTextFilePresenter =
class
private
FFileName :
string;
procedure SetFileName(
const Value :
string);
protected
procedure Present;
virtual;
abstract;
public
property FileName :
string read FFileName
write SetFileName;
end;
TTextFilePresenterListBox =
class( TTextFilePresenter )
private
FListBox : TListBox;
procedure SetListBox(
const Value : TListBox );
protected
procedure Present;
override;
public
property ListBox : TListBox
read FListBox
write SetListBox;
end;
implementation
uses
SysUtils;
procedure TTextFilePresenter.SetFileName(
const Value :
string );
begin
FFileName := Value;
Present;
end;
procedure TTextFilePresenterListBox.Present;
begin
if Assigned( FListBox )
then
if FileExists( FileName )
then
FListBox.Items.LoadFromFile( FileName )
else
FListBox.Clear;
end;
procedure TTextFilePresenterListBox.SetListBox(
const Value : TListBox );
begin
FListBox := Value;
Present;
end;
end.
Nun kann man sehr genau steuern, welche ListBox man damit ansprechen möchte.
Egal in welchem Formular und ohne Nebenwirkungen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)