mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-07-27 07:38:05 +02:00
TaskDialog: use DoOnXXX methods to call the event handlers.
Also rename some methods of LCLTaskDialog for a bit more consistency.
This commit is contained in:
parent
d31e76a1f6
commit
b5f0aca3ea
@ -664,6 +664,16 @@ type
|
|||||||
function DoExecute(ParentWnd: HWND): Boolean; dynamic;
|
function DoExecute(ParentWnd: HWND): Boolean; dynamic;
|
||||||
procedure DoOnButtonClicked(AModalResult: Integer; var ACanClose: Boolean); dynamic;
|
procedure DoOnButtonClicked(AModalResult: Integer; var ACanClose: Boolean); dynamic;
|
||||||
procedure DoOnRadioButtonClicked(ButtonID: Integer); dynamic;
|
procedure DoOnRadioButtonClicked(ButtonID: Integer); dynamic;
|
||||||
|
procedure DoOnDialogConstructed; dynamic;
|
||||||
|
procedure DoOnDialogCreated; dynamic;
|
||||||
|
procedure DoOnDialogDestroyed; dynamic;
|
||||||
|
procedure DoOnExpandButtonClicked(Expanded: Boolean); dynamic;
|
||||||
|
procedure DoOnTimer(TickCount: Cardinal; var Reset: Boolean); dynamic;
|
||||||
|
procedure DoOnVerificationClicked(Checked: Boolean); dynamic;
|
||||||
|
//procedure DoOnHelp; dynamic;
|
||||||
|
//procedure DoOnHyperlinkClicked(const AURL: string); dynamic;
|
||||||
|
//procedure DoOnNavigated; dynamic;
|
||||||
|
|
||||||
procedure SetRadioButtonFromRadioIndex(AIndex: Integer);
|
procedure SetRadioButtonFromRadioIndex(AIndex: Integer);
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
|
@ -179,6 +179,42 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCustomTaskDialog.DoOnDialogConstructed;
|
||||||
|
begin
|
||||||
|
if Assigned(FOnDialogConstructed) then
|
||||||
|
FOnDialogConstructed(Self);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCustomTaskDialog.DoOnDialogCreated;
|
||||||
|
begin
|
||||||
|
if Assigned(FOnDialogCreated) then
|
||||||
|
FOnDialogCreated(Self);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCustomTaskDialog.DoOnDialogDestroyed;
|
||||||
|
begin
|
||||||
|
if Assigned(FOnDialogDestroyed) then
|
||||||
|
FOnDialogDestroyed(Self);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCustomTaskDialog.DoOnExpandButtonClicked({%H-}Expanded: Boolean);
|
||||||
|
begin
|
||||||
|
if Assigned(FOnExpand) then
|
||||||
|
FOnExpand(Self)
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCustomTaskDialog.DoOnTimer(TickCount: Cardinal; var Reset: Boolean);
|
||||||
|
begin
|
||||||
|
if Assigned(FOnTimer) then
|
||||||
|
FOnTimer(Self, TickCount, Reset);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCustomTaskDialog.DoOnVerificationClicked({%H-}Checked: Boolean);
|
||||||
|
begin
|
||||||
|
if Assigned(FOnVerificationClicked) then
|
||||||
|
FOnVerificationClicked(Self);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCustomTaskDialog.SetRadioButtonFromRadioIndex(AIndex: Integer);
|
procedure TCustomTaskDialog.SetRadioButtonFromRadioIndex(AIndex: Integer);
|
||||||
begin
|
begin
|
||||||
if (AIndex >= TaskDialogFirstRadioButtonIndex) and (AIndex-TaskDialogFirstRadioButtonIndex < RadioButtons.Count) then
|
if (AIndex >= TaskDialogFirstRadioButtonIndex) and (AIndex-TaskDialogFirstRadioButtonIndex < RadioButtons.Count) then
|
||||||
|
@ -1657,7 +1657,7 @@ type
|
|||||||
TTaskDialogAccess = class(TCustomTaskDialog)
|
TTaskDialogAccess = class(TCustomTaskDialog)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TaskDialogCallbackProc(hwnd: HWND; uNotification: UINT;
|
function TaskDialogCallbackProc({%H-}hwnd: HWND; uNotification: UINT;
|
||||||
wParam: WPARAM; {%H-}lParam: LPARAM; dwRefData: Long_Ptr): HRESULT; stdcall;
|
wParam: WPARAM; {%H-}lParam: LPARAM; dwRefData: Long_Ptr): HRESULT; stdcall;
|
||||||
var Dlg: TTaskDialog absolute dwRefData;
|
var Dlg: TTaskDialog absolute dwRefData;
|
||||||
CanClose, ResetTimer: Boolean;
|
CanClose, ResetTimer: Boolean;
|
||||||
@ -1667,31 +1667,37 @@ begin
|
|||||||
TDN_DIALOG_CONSTRUCTED:
|
TDN_DIALOG_CONSTRUCTED:
|
||||||
begin
|
begin
|
||||||
Assert((Dlg is TCustomTaskDialog),'TaskDialogCallbackProc: dwRefData is NOT a TCustomTaskDialog');
|
Assert((Dlg is TCustomTaskDialog),'TaskDialogCallbackProc: dwRefData is NOT a TCustomTaskDialog');
|
||||||
if Assigned(Dlg.OnDialogConstructed) then
|
{$PUSH}
|
||||||
Dlg.OnDialogConstructed(Dlg);
|
{$ObjectChecks OFF}
|
||||||
|
TTaskDialogAccess(Dlg).DoOnDialogConstructed;
|
||||||
|
{$POP}
|
||||||
end;
|
end;
|
||||||
TDN_CREATED:
|
TDN_CREATED:
|
||||||
begin
|
begin
|
||||||
Assert((Dlg is TCustomTaskDialog),'TaskDialogCallbackProc: dwRefData is NOT a TCustomTaskDialog');
|
Assert((Dlg is TCustomTaskDialog),'TaskDialogCallbackProc: dwRefData is NOT a TCustomTaskDialog');
|
||||||
if Assigned(Dlg.OnDialogCreated) then
|
{$PUSH}
|
||||||
Dlg.OnDialogCreated(Dlg);
|
{$ObjectChecks OFF}
|
||||||
|
TTaskDialogAccess(Dlg).DoOnDialogCreated;
|
||||||
|
{$POP}
|
||||||
end;
|
end;
|
||||||
TDN_DESTROYED:
|
TDN_DESTROYED:
|
||||||
begin
|
begin
|
||||||
Assert((Dlg is TCustomTaskDialog),'TaskDialogCallbackProc: dwRefData is NOT a TCustomTaskDialog');
|
Assert((Dlg is TCustomTaskDialog),'TaskDialogCallbackProc: dwRefData is NOT a TCustomTaskDialog');
|
||||||
if Assigned(Dlg.OnDialogDestroyed) then
|
{$PUSH}
|
||||||
Dlg.OnDialogDestroyed(Dlg);
|
{$ObjectChecks OFF}
|
||||||
|
TTaskDialogAccess(Dlg).DoOnDialogDestroyed;
|
||||||
|
{$POP}
|
||||||
end;
|
end;
|
||||||
TDN_BUTTON_CLICKED:
|
TDN_BUTTON_CLICKED:
|
||||||
begin
|
begin
|
||||||
Assert((Dlg is TCustomTaskDialog),'TaskDialogCallbackProc: dwRefData is NOT a TCustomTaskDialog');
|
Assert((Dlg is TCustomTaskDialog),'TaskDialogCallbackProc: dwRefData is NOT a TCustomTaskDialog');
|
||||||
if Assigned(Dlg.OnButtonClicked) then
|
|
||||||
begin
|
|
||||||
CanClose := True;
|
CanClose := True;
|
||||||
Dlg.OnButtonClicked(Dlg, Dlg.ButtonIDToModalResult(wParam), CanClose);
|
{$PUSH}
|
||||||
|
{$ObjectChecks OFF}
|
||||||
|
TTaskDialogAccess(Dlg).DoOnButtonClicked(Dlg.ButtonIDToModalResult(wParam), CanClose);
|
||||||
if not CanClose then
|
if not CanClose then
|
||||||
Result := S_FALSE;
|
Result := S_FALSE;
|
||||||
end;
|
{$POP}
|
||||||
end;
|
end;
|
||||||
TDN_HYPERLINK_CLICKED:
|
TDN_HYPERLINK_CLICKED:
|
||||||
begin
|
begin
|
||||||
@ -1720,25 +1726,29 @@ begin
|
|||||||
Return value: To reset the tickcount, the application must return S_FALSE, otherwise the tickcount will continue to increment.
|
Return value: To reset the tickcount, the application must return S_FALSE, otherwise the tickcount will continue to increment.
|
||||||
}
|
}
|
||||||
Assert((Dlg is TCustomTaskDialog),'TaskDialogCallbackProc: dwRefData is NOT a TCustomTaskDialog');
|
Assert((Dlg is TCustomTaskDialog),'TaskDialogCallbackProc: dwRefData is NOT a TCustomTaskDialog');
|
||||||
if Assigned(Dlg.OnTimer) then
|
|
||||||
begin
|
|
||||||
ResetTimer := False;
|
ResetTimer := False;
|
||||||
Dlg.OnTimer(Dlg, Cardinal(wParam), ResetTimer);
|
{$PUSH}
|
||||||
|
{$ObjectChecks OFF}
|
||||||
|
TTaskDialogAccess(Dlg).DoOnTimer(Cardinal(wParam), ResetTimer);
|
||||||
|
{$POP}
|
||||||
if ResetTimer then
|
if ResetTimer then
|
||||||
Result := S_FALSE;
|
Result := S_FALSE;
|
||||||
end;
|
end;
|
||||||
end;
|
|
||||||
TDN_VERIFICATION_CLICKED:
|
TDN_VERIFICATION_CLICKED:
|
||||||
begin
|
begin
|
||||||
Assert((Dlg is TCustomTaskDialog),'TaskDialogCallbackProc: dwRefData is NOT a TCustomTaskDialog');
|
Assert((Dlg is TCustomTaskDialog),'TaskDialogCallbackProc: dwRefData is NOT a TCustomTaskDialog');
|
||||||
if Assigned(Dlg.OnVerificationClicked) then
|
{$PUSH}
|
||||||
Dlg.OnVerificationClicked(Dlg);
|
{$ObjectChecks OFF}
|
||||||
|
TTaskDialogAccess(Dlg).DoOnverificationClicked(BOOL(wParam));
|
||||||
|
{$POP}
|
||||||
end;
|
end;
|
||||||
TDN_EXPANDO_BUTTON_CLICKED:
|
TDN_EXPANDO_BUTTON_CLICKED:
|
||||||
begin
|
begin
|
||||||
Assert((Dlg is TCustomTaskDialog),'TaskDialogCallbackProc: dwRefData is NOT a TCustomTaskDialog');
|
Assert((Dlg is TCustomTaskDialog),'TaskDialogCallbackProc: dwRefData is NOT a TCustomTaskDialog');
|
||||||
if Assigned(Dlg.OnExpand) then
|
{$PUSH}
|
||||||
Dlg.OnExpand(Dlg);
|
{$ObjectChecks OFF}
|
||||||
|
TTaskDialogAccess(Dlg).DoOnExpandButtonClicked(BOOL(wParam));
|
||||||
|
{$POP}
|
||||||
end;
|
end;
|
||||||
TDN_RADIO_BUTTON_CLICKED:
|
TDN_RADIO_BUTTON_CLICKED:
|
||||||
begin
|
begin
|
||||||
|
@ -58,15 +58,15 @@ type
|
|||||||
procedure SetupTimer;
|
procedure SetupTimer;
|
||||||
procedure ResetTimer;
|
procedure ResetTimer;
|
||||||
|
|
||||||
procedure OnTimer(Sender: TObject);
|
|
||||||
procedure OnRadioButtonClick(Sender: TObject);
|
|
||||||
procedure DoDialogConstructed;
|
procedure DoDialogConstructed;
|
||||||
procedure DoDialogCreated;
|
procedure DoDialogCreated;
|
||||||
procedure DoDialogDestroyed;
|
procedure DoDialogDestroyed;
|
||||||
procedure VerifyClicked(Sender: TObject);
|
procedure OnButtonClicked(Sender: TObject);
|
||||||
|
procedure OnRadioButtonClick(Sender: TObject);
|
||||||
|
procedure OnVerifyClicked(Sender: TObject);
|
||||||
|
procedure OnTimer(Sender: TObject);
|
||||||
|
|
||||||
protected
|
protected
|
||||||
procedure HandleEmulatedButtonClicked(Sender: TObject);
|
|
||||||
procedure SetupControls;
|
procedure SetupControls;
|
||||||
public
|
public
|
||||||
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
|
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
|
||||||
@ -432,7 +432,7 @@ begin
|
|||||||
ShowHint := True;
|
ShowHint := True;
|
||||||
inc(Y,Height+2);
|
inc(Y,Height+2);
|
||||||
ModalResult := i+TaskDialogFirstButtonIndex;
|
ModalResult := i+TaskDialogFirstButtonIndex;
|
||||||
OnClick := @HandleEmulatedButtonClicked;
|
OnClick := @OnButtonClicked;
|
||||||
if ModalResult=aButtonDef then
|
if ModalResult=aButtonDef then
|
||||||
ActiveControl := CommandLink;
|
ActiveControl := CommandLink;
|
||||||
if (tfEmulateClassicStyle in FDlg.Flags) then
|
if (tfEmulateClassicStyle in FDlg.Flags) then
|
||||||
@ -485,7 +485,7 @@ var
|
|||||||
Result.Caption := s;
|
Result.Caption := s;
|
||||||
Result.ModalResult := AModalResult;
|
Result.ModalResult := AModalResult;
|
||||||
Result.TabOrder := CurrTabOrder;
|
Result.TabOrder := CurrTabOrder;
|
||||||
Result.OnClick := @HandleEmulatedButtonClicked;
|
Result.OnClick := @OnButtonClicked;
|
||||||
|
|
||||||
if Assigned(FDlg.Buttons.DefaultButton) then
|
if Assigned(FDlg.Buttons.DefaultButton) then
|
||||||
begin
|
begin
|
||||||
@ -536,7 +536,7 @@ begin
|
|||||||
SetBounds(X,Y,XB-X,24);
|
SetBounds(X,Y,XB-X,24);
|
||||||
Caption := VerificationText;
|
Caption := VerificationText;
|
||||||
Checked := FVerifyChecked;
|
Checked := FVerifyChecked;
|
||||||
OnClick := @VerifyClicked;
|
OnClick := @OnVerifyClicked;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
inc(Y,36);
|
inc(Y,36);
|
||||||
@ -669,17 +669,17 @@ var
|
|||||||
MSecs: Cardinal;
|
MSecs: Cardinal;
|
||||||
MSecs64: Int64;
|
MSecs64: Int64;
|
||||||
begin
|
begin
|
||||||
if Assigned(FDlg.OnTimer) then
|
|
||||||
begin
|
|
||||||
MSecs64 := MilliSecondsBetween(Now, TimerStartTime);
|
MSecs64 := MilliSecondsBetween(Now, TimerStartTime);
|
||||||
{$PUSH}{$R-}
|
{$PUSH}{$R-}
|
||||||
MSecs := MSecs64;
|
MSecs := MSecs64;
|
||||||
{$POP}
|
{$POP}
|
||||||
AResetTimer := False;
|
AResetTimer := False;
|
||||||
FDlg.OnTimer(FDlg, MSecs, AResetTimer);
|
{$PUSH}
|
||||||
|
{$ObjectChecks OFF}
|
||||||
|
TTaskDialogAccess(FDlg).DoOnTimer(MSecs, AResetTimer);
|
||||||
|
{$POP}
|
||||||
if AResetTimer then
|
if AResetTimer then
|
||||||
ResetTimer;
|
ResetTimer;
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TLCLTaskDialog.OnRadioButtonClick(Sender: TObject);
|
procedure TLCLTaskDialog.OnRadioButtonClick(Sender: TObject);
|
||||||
@ -711,40 +711,48 @@ end;
|
|||||||
|
|
||||||
procedure TLCLTaskDialog.DoDialogConstructed;
|
procedure TLCLTaskDialog.DoDialogConstructed;
|
||||||
begin
|
begin
|
||||||
if Assigned(FDlg.OnDialogConstructed) then
|
{$PUSH}
|
||||||
FDlg.OnDialogDestroyed(FDlg);
|
{$ObjectChecks OFF}
|
||||||
|
TTaskDialogAccess(FDlg).DoOnDialogConstructed;
|
||||||
|
{$POP}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TLCLTaskDialog.DoDialogCreated;
|
procedure TLCLTaskDialog.DoDialogCreated;
|
||||||
begin
|
begin
|
||||||
if Assigned(FDlg.OnDialogCreated) then
|
{$PUSH}
|
||||||
FDlg.OnDialogCreated(FDlg);
|
{$ObjectChecks OFF}
|
||||||
|
TTaskDialogAccess(FDlg).DoOnDialogCreated;
|
||||||
|
{$POP}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TLCLTaskDialog.DoDialogDestroyed;
|
procedure TLCLTaskDialog.DoDialogDestroyed;
|
||||||
begin
|
begin
|
||||||
if Assigned(FDlg.OnDialogDestroyed) then
|
{$PUSH}
|
||||||
FDlg.OnDialogDestroyed(FDlg);
|
{$ObjectChecks OFF}
|
||||||
|
TTaskDialogAccess(FDlg).DoOnDialogDestroyed;
|
||||||
|
{$POP}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TLCLTaskDialog.VerifyClicked(Sender: TObject);
|
procedure TLCLTaskDialog.OnVerifyClicked(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if Assigned(FDlg.OnVerificationClicked) then
|
{$PUSH}
|
||||||
FDlg.OnVerificationClicked(FDlg);
|
{$ObjectChecks OFF}
|
||||||
|
TTaskDialogAccess(FDlg).DoOnverificationClicked(VerifyCheckBox.Checked);
|
||||||
|
{$POP}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TLCLTaskDialog.HandleEmulatedButtonClicked(Sender: TObject);
|
procedure TLCLTaskDialog.OnButtonClicked(Sender: TObject);
|
||||||
var Btn: TButton absolute Sender;
|
var Btn: TButton absolute Sender;
|
||||||
CanClose: Boolean;
|
CanClose: Boolean;
|
||||||
begin
|
begin
|
||||||
if Assigned(FDlg) and Assigned(FDlg.OnButtonClicked) then
|
|
||||||
begin
|
|
||||||
CanClose := True;
|
CanClose := True;
|
||||||
FDlg.OnButtonClicked(FDlg, FDlg.ButtonIDToModalResult(Btn.ModalResult),CanClose);
|
{$PUSH}
|
||||||
|
{$ObjectChecks OFF}
|
||||||
|
TTaskDialogAccess(FDlg).DoOnButtonClicked(FDlg.ButtonIDToModalResult(Btn.ModalResult), CanClose);
|
||||||
if not CanClose then
|
if not CanClose then
|
||||||
ModalResult := mrNone;
|
ModalResult := mrNone;
|
||||||
end;
|
{$POP}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user