mediatorunit1.pas
来自「设计模式delphi版给想学delphi的朋友一个很有价值的参考」· PAS 代码 · 共 169 行
PAS
169 行
unit MediatorUnit1;
interface
uses
controls, classes;
type
TWidget = class;
TDialogDirector = class
protected
constructor Create;
procedure CreateWidget(); virtual; abstract;
public
destructor Destroy; virtual;
procedure ShowDialog(); virtual;
procedure WidgetChanged(theChangedWidget: TWidget); virtual; abstract;
end;
TWidget = class
private
f_director: TDialogDirector;
public
constructor Create(adialogdirector: TDialogDirector);
procedure Changed(); virtual;
procedure HandleMouse(event: TMouseEvent); virtual;
//.........
end;
TmyListBox = class(TWidget)
public
constructor Create(adialogdirector: TDialogDirector);
function GetSelection(): string; virtual;
procedure SetList(listItem: TList); virtual;
procedure HandleMouse(event: TMouseEvent); virtual;
//......
end;
TmyEntryField = class(TWidget)
public
constructor Create(adialogdirector: TDialogDirector);
procedure SetText(const text: string); virtual;
function GetText(): string; virtual;
procedure HandleMouse(event: TMouseEvent); virtual;
//......
end;
TmyButton = class(TWidget)
public
constructor Create(adialogdirector: TDialogDirector);
procedure SetText(const text: string); virtual;
procedure HandleMouse(event: TMouseEvent); virtual;
//......
end;
TFontDialogDirector = class(TDialogDirector)
private
f_ok: TmyButton;
f_cancel: TmyButton;
f_fontList: TmyListBox;
f_fontName: TmyEntryField;
protected
procedure CreateWidget(); virtual;
public
constructor Create;
destructor Destroy; virtual;
procedure WidgetChanged(theChangedWidget: TWidget); virtual;
end;
implementation
constructor TDialogDirector.Create;
begin
//....
end;
destructor TDialogDirector.Destroy;
begin
//....
end;
procedure TDialogDirector.ShowDialog();
begin
//....
end;
constructor TWidget.Create(adialogdirector: TDialogDirector);
begin
//....
end;
procedure TWidget.Changed();
begin
f_director.WidgetChanged(self);
end;
procedure TWidget.HandleMouse(event: TMouseEvent);
begin
//....
end;
constructor TmyListBox.Create(adialogdirector: TDialogDirector);
begin
//....
end;
function TmyListBox.GetSelection(): string;
begin
//....
end;
procedure TmyListBox.SetList(listItem: TList);
begin
//....
end;
procedure TmyListBox.HandleMouse(event: TMouseEvent);
begin
//....
end;
constructor TmyEntryField.Create(adialogdirector: TDialogDirector);
begin
//....
end;
procedure TmyEntryField.SetText(const text: string);
begin
//....
end;
function TmyEntryField.GetText(): string;
begin
//....
end;
procedure TmyEntryField.HandleMouse(event: TMouseEvent);
begin
//....
end;
constructor TmyButton.Create(adialogdirector: TDialogDirector);
begin
//....
end;
procedure TmyButton.SetText(const text: string);
begin
//....
end;
procedure TmyButton.HandleMouse(event: TMouseEvent);
begin
//....
Changed();
end;
procedure TFontDialogDirector.CreateWidget();
begin
f_ok := TmyButton.Create(self);
f_cancel := TmyButton.Create(self);
f_fontList := TmyListBox.Create(self);
f_fontName := TmyEntryField.Create(self);
//
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?