unit FCaPolicyTaskCate; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Buttons, FCaPolicySel, Define, Vcl.ExtCtrls, ManagerCaPolicy, FCaPolicyTaskSel; type TFrmCaPolicyTaskCate = class(TFrame) pnClient: TPanel; SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; SpeedButton3: TSpeedButton; SpeedButton4: TSpeedButton; SpeedButton5: TSpeedButton; SpeedButton6: TSpeedButton; SpeedButton7: TSpeedButton; procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton7Click(Sender: TObject); private { Private declarations } FrmCaPolicyTaskSel_: TFrmCaPolicyTaskSel; SelCaKind_: TCaTaskKind; procedure CreateCaPolicySel(nCate: Integer); public { Public declarations } Constructor Create(aOwner: TComponent); override; procedure process_WM_CAPOLICY_DLG_OK(var msg: TMessage); Message WM_CAPOLICY_DLG_OK; procedure process_WM_CAPOLICY_DLG_CANCEL(var msg: TMessage); Message WM_CAPOLICY_DLG_CANCEL; property SelectedCaKind: TCaTaskKind read SelCaKind_; end; implementation {$R *.dfm} Constructor TFrmCaPolicyTaskCate.Create(aOwner: TComponent); begin Inherited Create(aOwner); SelCaKind_ := ctkUnknown; FrmCaPolicyTaskSel_ := nil; end; procedure TFrmCaPolicyTaskCate.CreateCaPolicySel(nCate: Integer); begin if FrmCaPolicyTaskSel_ = nil then begin FrmCaPolicyTaskSel_ := TFrmCaPolicyTaskSel.Create(Self); FrmCaPolicyTaskSel_.Parent := Self; FrmCaPolicyTaskSel_.Align := alClient; FrmCaPolicyTaskSel_.RefreshPolicy(nCate); FrmCaPolicyTaskSel_.Visible := true; pnClient.Visible := false; end; end; procedure TFrmCaPolicyTaskCate.SpeedButton1Click(Sender: TObject); begin if Sender is TSpeedButton then CreateCaPolicySel(TSpeedButton(Sender).Tag); end; procedure TFrmCaPolicyTaskCate.SpeedButton7Click(Sender: TObject); begin if (Owner <> nil) and (Owner is TWinControl) then PostMessage(TWinControl(Owner).Handle, WM_CAPOLICY_DLG_CANCEL, 0, 0); end; procedure TFrmCaPolicyTaskCate.process_WM_CAPOLICY_DLG_OK(var msg: TMessage); begin if (Owner <> nil) and (Owner is TWinControl) then begin SelCaKind_ := FrmCaPolicyTaskSel_.SelectedCaKind; PostMessage(TWinControl(Owner).Handle, WM_CAPOLICY_DLG_OK, 0, 0); end; end; procedure TFrmCaPolicyTaskCate.process_WM_CAPOLICY_DLG_CANCEL(var msg: TMessage); begin if FrmCaPolicyTaskSel_ <> nil then begin pnClient.Visible := true; FreeAndNil(FrmCaPolicyTaskSel_); end; end; end.