1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
unit LazMsgWorker;
{$mode objfpc}{$H+}
interface
uses
// LazUtils
System.UITypes;
type
TLazMessageWorker = function(const aCaption, aMsg: string;
DlgType: TMsgDlgType; Buttons: TMsgDlgButtons;
const HelpKeyword: string = ''): Integer of object;
TLazQuestionWorker = function(const aCaption, aMsg: string;
DlgType: TMsgDlgType; Buttons: array of const;
const HelpKeyword: string = ''): Integer of object;
var // set by the IDE
LazMessageWorker: TLazMessageWorker = nil;
LazQuestionWorker: TLazQuestionWorker = nil;
function LazMessageDialogAb(const aCaption, aMsg: string;
DlgType: TMsgDlgType; Buttons: TMsgDlgButtons;
ShowAbort: boolean; const HelpKeyword: string = ''): Integer;
function LazQuestionDialogAb(const aCaption, aMsg: string;
DlgType: TMsgDlgType; Buttons: array of const;
HideAbort: boolean; const HelpKeyword: string = ''): Integer;
implementation
function LazMessageDialogAb(const aCaption, aMsg: string; DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons; ShowAbort: boolean; const HelpKeyword: string): Integer;
begin
if ShowAbort then begin
// add an abort button for 'Cancel all' and replace a Cancel with Ignore
Buttons:=Buttons+[mbAbort];
if mbCancel in Buttons then
Buttons:=Buttons-[mbCancel]+[mbIgnore];
end;
Result:=LazMessageWorker(aCaption,aMsg,DlgType,Buttons,HelpKeyword);
end;
function LazQuestionDialogAb(const aCaption, aMsg: string;
DlgType: TMsgDlgType; Buttons: array of const;
HideAbort: boolean; const HelpKeyword: string): Integer;
var
NewButtons: array of TVarRec;
i: Integer;
j: Integer;
begin
SetLength(NewButtons{%H-},High(Buttons)-Low(Buttons)+1);
i:=low(Buttons);
j:=0;
while i<=High(Buttons) do begin
if HideAbort
and (Buttons[i].VType=vtInteger)
and (Buttons[i].VInteger=mrAbort) then begin
// skip abort button
inc(i);
// and skip abort caption
if Buttons[i].VType<>vtInteger then
inc(i);
end else begin
NewButtons[j]:=Buttons[i];
inc(i);
inc(j);
end;
end;
SetLength(NewButtons,j);
Result:=LazQuestionWorker(aCaption,aMsg,DlgType,NewButtons,HelpKeyword);
end;
end.
|