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 + -
显示快捷键?