📄 jvqdsadialogs.pas
字号:
function TDSAQueueStorage.ReadInt64(const DSAInfo: TDSARegItem; const Key: string): Int64;
begin
Result := StrToInt64(GetDSAValue(DSAInfo, Key, DSAInt64));
end;
function TDSAQueueStorage.ReadInt64Def(const DSAInfo: TDSARegItem; const Key: string;
const Default: Int64): Int64;
begin
if HasDSAKey(DSAInfo, Key) then
Result := ReadInt64(DSAInfo, Key)
else
Result := Default;
end;
function TDSAQueueStorage.ReadInteger(const DSAInfo: TDSARegItem; const Key: string): Integer;
begin
Result := StrToInt(GetDSAValue(DSAInfo, Key, DSAInt));
end;
function TDSAQueueStorage.ReadIntegerDef(const DSAInfo: TDSARegItem; const Key: string;
const Default: Integer): Integer;
begin
if HasDSAKey(DSAInfo, Key) then
Result := ReadInteger(DSAInfo, Key)
else
Result := Default;
end;
function TDSAQueueStorage.ReadString(const DSAInfo: TDSARegItem; const Key: string): string;
begin
Result := GetDSAValue(DSAInfo, Key, DSAString);
end;
function TDSAQueueStorage.ReadStringDef(const DSAInfo: TDSARegItem; const Key: string;
const Default: string): string;
begin
if HasDSAKey(DSAInfo, Key) then
Result := ReadString(DSAInfo, Key)
else
Result := Default;
end;
procedure TDSAQueueStorage.WriteBool(const DSAInfo: TDSARegItem; const Key: string;
const Value: Boolean);
begin
if Value then
SetDSAValue(DSAInfo, Key, DSABool, '1')
else
SetDSAValue(DSAInfo, Key, DSABool, '0');
end;
procedure TDSAQueueStorage.WriteFloat(const DSAInfo: TDSARegItem; const Key: string;
const Value: Extended);
begin
SetDSAValue(DSAInfo, Key, DSAFloat, FloatToStr(Value));
end;
procedure TDSAQueueStorage.WriteInt64(const DSAInfo: TDSARegItem; const Key: string;
const Value: Int64);
begin
SetDSAValue(DSAInfo, Key, DSAInt64, IntToStr(Value));
end;
procedure TDSAQueueStorage.WriteInteger(const DSAInfo: TDSARegItem; const Key: string;
const Value: Integer);
begin
SetDSAValue(DSAInfo, Key, DSAInt, IntToStr(Value));
end;
procedure TDSAQueueStorage.WriteString(const DSAInfo: TDSARegItem; const Key: string;
const Value: string);
begin
SetDSAValue(DSAInfo, Key, DSAString, Value);
end;
//--------------------------------------------------------------------------------------------------
// Helpers
//--------------------------------------------------------------------------------------------------
const
Captions: array [TMsgDlgType] of string =
(SMsgDlgWarning, SMsgDlgError, SMsgDlgInformation, SMsgDlgConfirm, '');
IconIDs: array [TMsgDlgType] of QMessageBoxIcon =
(QMessageBoxIcon_Warning, QMessageBoxIcon_Critical, QMessageBoxIcon_Information,
QMessageBoxIcon_NoIcon, QMessageBoxIcon_NoIcon);
// TMsgDlgType = (mtCustom, mtInformation, mtWarning, mtError, mtConfirmation);
ButtonCaptions: array [TMsgDlgBtn] of string =
('', SMsgDlgOK, SMsgDlgCancel, SMsgDlgYes,
SMsgDlgNo, SMsgDlgAbort, SMsgDlgRetry, SMsgDlgIgnore,
SMsgDlgAll, SMsgDlgNoToAll, SMsgDlgYesToAll, SMsgDlgHelp);
ModalResults: array [TMsgDlgBtn] of Integer =
(0, mrOk, mrCancel, mrYes, mrNo, mrAbort, mrRetry, mrIgnore, mrAll, mrNoToAll,
mrYesToAll, 0);
function DlgCaption(const DlgType: TMsgDlgType): string;
begin
Result := Captions[DlgType];
end;
function DlgPic(const DlgType: TMsgDlgType): TGraphic;
begin
if IconIDs[DlgType] <> QMessageBoxIcon_NoIcon then
begin
Result := TIcon.Create;
try
// TODO
except
Result.Free;
raise;
end;
end
else
Result := nil;
end;
function DlgButtonCaptions(const Buttons: TMsgDlgButtons): TDynStringArray;
var
I: Integer;
B: TMsgDlgBtn;
begin
SetLength(Result, Ord(High(TMsgDlgBtn)) + 1);
I := 0;
for B := Low(TMsgDlgBtn) to High(TMsgDlgBtn) do
if B in Buttons then
begin
Result[I] := ButtonCaptions[B];
Inc(I);
end;
SetLength(Result, I);
end;
function DlgButtonResults(const Buttons: TMsgDlgButtons): TDynIntegerArray;
var
I: Integer;
B: TMsgDlgBtn;
begin
SetLength(Result, Ord(High(TMsgDlgBtn)) + 1);
I := 0;
for B := Low(TMsgDlgBtn) to High(TMsgDlgBtn) do
if B in Buttons then
begin
Result[I] := ModalResults[B];
Inc(I);
end;
SetLength(Result, I);
end;
function ButtonIndex(const Results: array of Integer; const ResCode: Integer): Integer; overload;
begin
Result := High(Results);
while (Result > -1) and (Results[Result] <> ResCode) do
Dec(Result);
end;
function ButtonIndex(const Results: array of Integer; const Button: TMsgDlgBtn): Integer; overload;
begin
Result := ButtonIndex(Results, ModalResults[Button]);
end;
//----------------------------------------------------------------------------
// MessageDlg replacements and extensions
//----------------------------------------------------------------------------
procedure ShowMessage(const Msg: string; const Center: TDlgCenterKind; const Timeout: Integer;
const ADynControlEngine: TJvDynControlEngine);
begin
MessageDlg(Msg, mtCustom, [mbOK], 0, Center, Timeout);
end;
procedure ShowMessageFmt(const Msg: string; const Params: array of const; const Center: TDlgCenterKind;
const Timeout: Integer; const ADynControlEngine: TJvDynControlEngine);
begin
MessageDlg(Format(Msg, Params), mtCustom, [mbOK], 0, Center, Timeout);
end;
function MessageDlg(const Msg: string; const DlgType: TMsgDlgType; const Buttons: TMsgDlgButtons;
const HelpCtx: Longint; const Center: TDlgCenterKind; const Timeout: Integer;
const DefaultButton: TMsgDlgBtn; const CancelButton: TMsgDlgBtn; const HelpButton: TMsgDlgBtn;
const ADynControlEngine: TJvDynControlEngine): TModalResult;
var
TmpPic: TGraphic;
begin
TmpPic := DlgPic(DlgType);
try
Result := MessageDlg(DlgCaption(DlgType), Msg, TmpPic, Buttons, HelpCtx, Center, Timeout, DefaultButton,
CancelButton, HelpButton, ADynControlEngine);
finally
TmpPic.Free;
end;
end;
function MessageDlg(const Caption, Msg: string; const DlgType: TMsgDlgType; const Buttons: TMsgDlgButtons;
const HelpCtx: Longint; const Center: TDlgCenterKind; const Timeout: Integer;
const DefaultButton: TMsgDlgBtn; const CancelButton: TMsgDlgBtn; const HelpButton: TMsgDlgBtn;
const ADynControlEngine: TJvDynControlEngine): TModalResult;
var
TmpPic: TGraphic;
begin
TmpPic := DlgPic(DlgType);
try
Result := MessageDlg(Caption, Msg, TmpPic, Buttons, HelpCtx, Center,
Timeout, DefaultButton, CancelButton, HelpButton, ADynControlEngine);
finally
TmpPic.Free;
end;
end;
function MessageDlg(const Caption, Msg: string; const Picture: TGraphic; const Buttons: TMsgDlgButtons;
const HelpCtx: Longint; const Center: TDlgCenterKind; const Timeout: Integer;
const DefaultButton: TMsgDlgBtn; const CancelButton: TMsgDlgBtn; const HelpButton: TMsgDlgBtn;
const ADynControlEngine: TJvDynControlEngine): TModalResult;
var
DefBtn: TMsgDlgBtn;
CanBtn: TMsgDlgBtn;
BtnResults: TDynIntegerArray;
begin
if DefaultButton = mbDefault then
begin
if mbOK in Buttons then
DefBtn := mbOK
else
if mbYes in Buttons then
DefBtn := mbYes
else
DefBtn := mbRetry;
end
else
DefBtn := DefaultButton;
if CancelButton = mbDefault then
begin
if mbCancel in Buttons then
CanBtn := mbCancel
else
if mbNo in Buttons then
CanBtn := mbNo
else
CanBtn := mbOK;
end
else
CanBtn := CancelButton;
BtnResults := DlgButtonResults(Buttons);
Result := MessageDlgEx(Caption, Msg, Picture, DlgButtonCaptions(Buttons),
BtnResults, HelpCtx, Center, Timeout, ButtonIndex(BtnResults, DefBtn),
ButtonIndex(BtnResults, CanBtn), ButtonIndex(BtnResults, HelpButton),
ADynControlEngine);
end;
function MessageDlgEx(const Msg: string; const DlgType: TMsgDlgType; const Buttons: array of string;
const Results: array of Integer; const HelpCtx: Longint; const Center: TDlgCenterKind;
const Timeout: Integer; const DefaultButton: Integer; const CancelButton: Integer;
const HelpButton: Integer; const ADynControlEngine: TJvDynControlEngine): TModalResult;
var
TmpPic: TGraphic;
begin
TmpPic := DlgPic(DlgType);
try
Result := MessageDlgEx(DlgCaption(DlgType), Msg, TmpPic, Buttons, Results, HelpCtx, Center, Timeout, DefaultButton,
CancelButton, HelpButton, ADynControlEngine);
finally
TmpPic.Free;
end;
end;
function MessageDlgEx(const Caption, Msg: string; const DlgType: TMsgDlgType;
const Buttons: array of string; const Results: array of Integer; const HelpCtx: Longint;
const Center: TDlgCenterKind; const Timeout: Integer; const DefaultButton: Integer;
const CancelButton: Integer; const HelpButton: Integer;
const ADynControlEngine: TJvDynControlEngine): TModalResult;
var
TmpPic: TGraphic;
begin
TmpPic := DlgPic(DlgType);
try
Result := MessageDlgEx(Caption, Msg, TmpPic, Buttons, Results, HelpCtx,
Center, Timeout, DefaultButton, CancelButton, HelpButton, ADynControlEngine);
finally
TmpPic.Free;
end;
end;
function MessageDlgEx(const Caption, Msg: string; const Picture: TGraphic;
const Buttons: array of string; const Results: array of Integer; const HelpCtx: Longint;
const Center: TDlgCenterKind; const Timeout: Integer; const DefaultButton: Integer;
const CancelButton: Integer; const HelpButton: Integer;
const ADynControlEngine: TJvDynControlEngine): TModalResult;
begin
Result := 0;
with CreateDSAMessageForm(Caption, Msg, Picture, Buttons, Results, HelpCtx, '',
Center, Timeout, DefaultButton, CancelButton, HelpButton, ADynControlEngine) do
try
Result := ShowModal;
except
Free;
end;
end;
//----------------------------------------------------------------------------
// "Don't Show Again" (DSA) dialogs
//----------------------------------------------------------------------------
procedure DSAShowMessage(const DlgID: Integer; const Msg: string;
const Center: TDlgCenterKind; const Timeout: Integer;
const ADynControlEngine: TJvDynControlEngine);
begin
DSAMessageDlg(DlgID, Msg, mtCustom, [mbOK], 0, Center, Timeout, mbDefault,
mbDefault, mbHelp, ADynControlEngine);
end;
procedure DSAShowMessageFmt(const DlgID: Integer; const Msg: string;
const Params: array of const; const Center: TDlgCenterKind;
const Timeout: Integer; const ADynControlEngine: TJvDynControlEngine);
begin
DSAMessageDlg(DlgID, Format(Msg, Params), mtCustom, [mbOK], 0, Center, Timeout,
mbDefault, mbDefault, mbHelp, ADynControlEngine);
end;
function DSAMessageDlg(const DlgID: Integer; const Msg: string; const DlgType: TMsgDlgType;
const Buttons: TMsgDlgButtons; const HelpCtx: Longint; const Center: TDlgCenterKind;
const Timeout: Integer; const DefaultButton: TMsgDlgBtn; const CancelButton: TMsgDlgBtn;
const HelpButton: TMsgDlgBtn; const ADynControlEngine: TJvDynControlEngine): TModalResult;
var
TmpPic: TGraphic;
begin
TmpPic := DlgPic(DlgType);
try
Result := DSAMessageDlg(DlgID, DlgCaption(DlgType), Msg, TmpPic, Buttons, HelpCtx,
Center, Timeout, DefaultButton, CancelButton, HelpButton, ADynControlEngine);
finally
TmpPic.Free;
end;
end;
function DSAMessageDlg(const DlgID: Integer; const Caption, Msg: string;
const DlgType: TMsgDlgType; const Buttons: TMsgDlgButtons; const HelpCtx: Longint;
const Center: TDlgCenterKind; const Timeout: Integer; const DefaultButton: TMsgDlgBtn;
const CancelButton: TMsgDlgBtn; const HelpButton: TMsgDlgBtn;
const ADynControlEngine: TJvDynControlEngine): TModalResult;
var
TmpPic: TGraphic;
begin
TmpPic := DlgPic(DlgType);
try
Result := DSAMessageDlg(DlgID, Caption, Msg, TmpPic, Buttons, HelpCtx, Center,
Timeout, DefaultButton, CancelButton, HelpButton, ADynControlEngine);
finally
TmpPic.Free;
end;
end;
function DSAMessageDlg(const DlgID: Integer; const Caption, Msg: string;
const Picture: TGraphic; const Buttons: TMsgDlgButtons; const HelpCtx: Longint;
const Center: TDlgCenterKind; const Timeou
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -