mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-11 14:49:28 +02:00
diff --git a/lcl/dialogs.pp b/lcl/dialogs.pp
index 24f69c5ac7..b156a70d9c 100644 --- a/lcl/dialogs.pp +++ b/lcl/dialogs.pp @@ -543,6 +543,7 @@ type tfShowMarqueeProgressBar, tfCallbackTimer, tfPositionRelativeToWindow, tfRtlLayout, tfNoDefaultRadioButton, tfCanBeMinimized, + tfNoSetForeGround, tfSizeToContent, tfForceNonNative, tfEmulateClassicStyle); TTaskDialogFlags = set of TTaskDialogFlag; diff --git a/lcl/include/taskdialog.inc b/lcl/include/taskdialog.inc index 2ce5a97571..ddf2f46aaa 100644 --- a/lcl/include/taskdialog.inc +++ b/lcl/include/taskdialog.inc @@ -179,6 +179,10 @@ function TCustomTaskDialog.DoExecute(ParentWnd: HWND): Boolean; Result := Result + [tdfNoDefaultRadioButton]; if tfCanBeMinimized in aTaskFlags then Result := Result + [tdfCanBeMinimized]; + if tfNoSetForeGround in aTaskFlags then + Result := Result + [tdfNoSetForeGround]; + if tfSizeToContent in aTaskFlags then + Result := Result + [tdfSizeToContent]; end; function TF_DIALOGICON(const aIcon: TTaskDialogIcon): LCLTaskDialog.TTaskDialogIcon; diff --git a/lcl/lcltaskdialog.pas b/lcl/lcltaskdialog.pas index 660702261f..2c3caccd43 100644 --- a/lcl/lcltaskdialog.pas +++ b/lcl/lcltaskdialog.pas @@ -127,7 +127,7 @@ interface uses {$IFDEF MSWINDOWS} - Windows, ctypes, + Windows, ctypes, CommCtrl, {$ENDIF} Classes, SysUtils, LazUTF8, @@ -172,7 +172,9 @@ type tdfExpandFooterArea, tdfExpandByDefault, tdfVerificationFlagChecked, tdfShowProgressBar, tdfShowMarqueeProgressBar, tdfCallbackTimer, tdfPositionRelativeToWindow, tdfRtlLayout, tdfNoDefaultRadioButton, - tdfCanBeMinimized, tdfQuery, tdfQueryMasked, tdfQueryFieldFocused); + tdfCanBeMinimized, tdfNoSetForeGround {added in Windows 8}, tdfSizeToContent, + //custom LCL flags + tdfQuery, tdfQueryMasked, tdfQueryFieldFocused); /// set of available configuration flags for the Task Dialog TTaskDialogFlags = set of TTaskDialogFlag; @@ -771,6 +773,29 @@ var if ModalResult=aButtonDef then Dialog.Form.ActiveControl := result; end; + {$IFDEF MSWINDOwS} + function TaskDialogFlagsToInteger(aFlags: TTaskDialogFlags): Integer; + const + //missing from CommCtrls in fpc < 3.3.1 + TDF_NO_SET_FOREGROUND = $10000; + TDF_SIZE_TO_CONTENT = $1000000; + FlagValues: Array[TTaskDialogFlag] of Integer = ( + TDF_ENABLE_HYPERLINKS, TDF_USE_HICON_MAIN, TDF_USE_HICON_FOOTER, + TDF_ALLOW_DIALOG_CANCELLATION, TDF_USE_COMMAND_LINKS, TDF_USE_COMMAND_LINKS_NO_ICON, + TDF_EXPAND_FOOTER_AREA, TDF_EXPANDED_BY_DEFAULT, TDF_VERIFICATION_FLAG_CHECKED, + TDF_SHOW_PROGRESS_BAR, TDF_SHOW_MARQUEE_PROGRESS_BAR, TDF_CALLBACK_TIMER, + TDF_POSITION_RELATIVE_TO_WINDOW, TDF_RTL_LAYOUT, TDF_NO_DEFAULT_RADIO_BUTTON, + TDF_CAN_BE_MINIMIZED, TDF_NO_SET_FOREGROUND {added in Windows 8}, TDF_SIZE_TO_CONTENT, + //custom LCL flags + 0 {tdfQuery}, 0 {tdfQueryMasked}, 0 {tdfQueryFieldFocused}); + var + aFlag: TTaskDialogFlag; + begin + Result := 0; + for aFlag := Low(TTaskDialogFlags) to High(TTaskDialogFlags) do + if (aFlag in aFlags) then Result := Result or FlagValues[aFlag]; + end; + {$ENDIF MSWINWOS} var ARadioOffset: integer; @@ -821,7 +846,7 @@ begin include(aFlags,tdfVerificationFlagChecked); if (Config.cButtons=0) and (aCommonButtons=[cbOk]) then Include(aFlags,tdfAllowDialogCancellation); // just OK -> Esc/Alt+F4 close - Config.dwFlags := integer(aFlags); + Config.dwFlags := TaskDialogFlagsToInteger(aFlags); Config.hMainIcon := TD_ICONS[aDialogIcon]; Config.hFooterIcon := TD_FOOTERICONS[aFooterIcon]; Config.nDefaultButton := aButtonDef;
This commit is contained in:
parent
c6200e29c8
commit
e5aa4cee57
@ -543,6 +543,7 @@ type
|
||||
tfShowMarqueeProgressBar, tfCallbackTimer,
|
||||
tfPositionRelativeToWindow, tfRtlLayout,
|
||||
tfNoDefaultRadioButton, tfCanBeMinimized,
|
||||
tfNoSetForeGround, tfSizeToContent,
|
||||
tfForceNonNative, tfEmulateClassicStyle);
|
||||
TTaskDialogFlags = set of TTaskDialogFlag;
|
||||
|
||||
|
@ -179,6 +179,10 @@ function TCustomTaskDialog.DoExecute(ParentWnd: HWND): Boolean;
|
||||
Result := Result + [tdfNoDefaultRadioButton];
|
||||
if tfCanBeMinimized in aTaskFlags then
|
||||
Result := Result + [tdfCanBeMinimized];
|
||||
if tfNoSetForeGround in aTaskFlags then
|
||||
Result := Result + [tdfNoSetForeGround];
|
||||
if tfSizeToContent in aTaskFlags then
|
||||
Result := Result + [tdfSizeToContent];
|
||||
end;
|
||||
|
||||
function TF_DIALOGICON(const aIcon: TTaskDialogIcon): LCLTaskDialog.TTaskDialogIcon;
|
||||
|
@ -127,7 +127,7 @@ interface
|
||||
|
||||
uses
|
||||
{$IFDEF MSWINDOWS}
|
||||
Windows, ctypes,
|
||||
Windows, ctypes, CommCtrl,
|
||||
{$ENDIF}
|
||||
Classes, SysUtils,
|
||||
LazUTF8,
|
||||
@ -172,7 +172,9 @@ type
|
||||
tdfExpandFooterArea, tdfExpandByDefault, tdfVerificationFlagChecked,
|
||||
tdfShowProgressBar, tdfShowMarqueeProgressBar, tdfCallbackTimer,
|
||||
tdfPositionRelativeToWindow, tdfRtlLayout, tdfNoDefaultRadioButton,
|
||||
tdfCanBeMinimized, tdfQuery, tdfQueryMasked, tdfQueryFieldFocused);
|
||||
tdfCanBeMinimized, tdfNoSetForeGround {added in Windows 8}, tdfSizeToContent,
|
||||
//custom LCL flags
|
||||
tdfQuery, tdfQueryMasked, tdfQueryFieldFocused);
|
||||
|
||||
/// set of available configuration flags for the Task Dialog
|
||||
TTaskDialogFlags = set of TTaskDialogFlag;
|
||||
@ -771,6 +773,29 @@ var
|
||||
if ModalResult=aButtonDef then
|
||||
Dialog.Form.ActiveControl := result;
|
||||
end;
|
||||
{$IFDEF MSWINDOwS}
|
||||
function TaskDialogFlagsToInteger(aFlags: TTaskDialogFlags): Integer;
|
||||
const
|
||||
//missing from CommCtrls in fpc < 3.3.1
|
||||
TDF_NO_SET_FOREGROUND = $10000;
|
||||
TDF_SIZE_TO_CONTENT = $1000000;
|
||||
FlagValues: Array[TTaskDialogFlag] of Integer = (
|
||||
TDF_ENABLE_HYPERLINKS, TDF_USE_HICON_MAIN, TDF_USE_HICON_FOOTER,
|
||||
TDF_ALLOW_DIALOG_CANCELLATION, TDF_USE_COMMAND_LINKS, TDF_USE_COMMAND_LINKS_NO_ICON,
|
||||
TDF_EXPAND_FOOTER_AREA, TDF_EXPANDED_BY_DEFAULT, TDF_VERIFICATION_FLAG_CHECKED,
|
||||
TDF_SHOW_PROGRESS_BAR, TDF_SHOW_MARQUEE_PROGRESS_BAR, TDF_CALLBACK_TIMER,
|
||||
TDF_POSITION_RELATIVE_TO_WINDOW, TDF_RTL_LAYOUT, TDF_NO_DEFAULT_RADIO_BUTTON,
|
||||
TDF_CAN_BE_MINIMIZED, TDF_NO_SET_FOREGROUND {added in Windows 8}, TDF_SIZE_TO_CONTENT,
|
||||
//custom LCL flags
|
||||
0 {tdfQuery}, 0 {tdfQueryMasked}, 0 {tdfQueryFieldFocused});
|
||||
var
|
||||
aFlag: TTaskDialogFlag;
|
||||
begin
|
||||
Result := 0;
|
||||
for aFlag := Low(TTaskDialogFlags) to High(TTaskDialogFlags) do
|
||||
if (aFlag in aFlags) then Result := Result or FlagValues[aFlag];
|
||||
end;
|
||||
{$ENDIF MSWINWOS}
|
||||
|
||||
var
|
||||
ARadioOffset: integer;
|
||||
@ -821,7 +846,7 @@ begin
|
||||
include(aFlags,tdfVerificationFlagChecked);
|
||||
if (Config.cButtons=0) and (aCommonButtons=[cbOk]) then
|
||||
Include(aFlags,tdfAllowDialogCancellation); // just OK -> Esc/Alt+F4 close
|
||||
Config.dwFlags := integer(aFlags);
|
||||
Config.dwFlags := TaskDialogFlagsToInteger(aFlags);
|
||||
Config.hMainIcon := TD_ICONS[aDialogIcon];
|
||||
Config.hFooterIcon := TD_FOOTERICONS[aFooterIcon];
|
||||
Config.nDefaultButton := aButtonDef;
|
||||
|
Loading…
Reference in New Issue
Block a user