gpt4 book ai didi

delphi - 更改 MessageDlg 语言 delphi

转载 作者:行者123 更新时间:2023-12-04 14:50:10 26 4
gpt4 key购买 nike

当我使用 MessageDlg()功能类似于下面的代码:

if MessageDlg(SWarningWishToDelete + ' ' + PersonName + '?',
mtWarning, [mbNo, mbYes], 0) = mrYes then

是/否按钮以英语而不是我的操作系统语言显示。我在互联网上搜索了它,但是,我只是找到了大而旧的解决方案。我想知道是否有一种简单/新的方法来改变它?

最佳答案

您可以使用 CreateMessageDialog() 作为

procedure TForm1.Button1Click(Sender: TObject);
begin
with CreateMessageDialog('Msg', mtConfirmation, [mbYes, mbNo], mbNo) do
begin
try
TButton(FindComponent('Yes')).Caption:= 'نعم';
TButton(FindComponent('No')).Caption:= 'لا';
ShowModal;
finally
case ModalResult of
mrYes: ShowMessage('You click نعم');
mrNo: ShowMessage('You click لا');
mrCancel: ShowMessage('Dialog cancled!');
end;
Free;
end;
end;
end;

使用 TTaskDialog 作为
procedure TForm1.Button2Click(Sender: TObject);
Var
Dlg: TTaskDialog;
begin
Dlg := TTaskDialog.Create(Self);
try
with Dlg do
begin
CommonButtons:= [];
Caption:= 'Caption here';
Text:= 'Text here';
with Buttons.Add do
begin
Caption:= 'نعم';
ModalResult:= mrYes;
end;
with Buttons.Add do
begin
Caption:= 'لا';
ModalResult:= mrNo;
end;
if Execute then
case ModalResult of
mrYes: ShowMessage('You click نعم');
mrNo: ShowMessage('You click لا');
mrCancel: ShowMessage('Dialog cancled!');
end;
end;
finally
Dlg.Free;
end;
end;

Note: TTaskDialog is specific to a platform, and require Vista, Windows 7, or later Windows operating systems.



只是为了好玩,您甚至可以创建自己的函数:
function TForm1.MyDialog(const DlgCaption, DlgText: String; DlgButtons: array of string;
DlgType: TMsgDlgType; Buttons: TMsgDlgButtons): TForm;
Var
I: Integer;
F: TForm;
begin
F:= CreateMessageDialog(Text, DlgType, Buttons);
F.Caption:= DlgCaption;
TLabel(F.Components[1]).Caption:= DlgText;
for I := Low(DlgButtons) to High(DlgButtons) do
begin
TButton(F.Components[I+2]).Caption:= DlgButtons[I];
end;
Result:= F;
end;

并将其测试为
MyDialog('Caption', 'Text', ['Yes do', 'No don''t'], mtConfirmation, [mbYes, mbNo]).ShowModal;

这也是该功能的另一个版本
function MyDialog(Const DlgCaption, DlgText: string; DlgButtons: array of string;
DlgType: TMsgDlgType; Buttons: TMsgDlgButtons;
BidiMode: TBiDiMode = bdLeftToRight;
DefultButton: TMsgDlgBtn = mbOK):TForm;

函数代码
function TForm1.MyDialog(const DlgCaption, DlgText: string;
DlgButtons: array of string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons;
BidiMode: TBiDiMode; DefultButton: TMsgDlgBtn): TForm;
Var
I, CntBtns: Integer;
F: TForm;
Btn: TMsgDlgBtn;
begin
// Check for strings
CntBtns:= 0;
for Btn in Buttons do
begin
Inc(CntBtns);
end;
if Length(DlgButtons) <> CntBtns then
raise Exception.Create('DlgButtons and Buttons params should have the same count');
//Get the Form created by CreateMessageDialog function
F:= CreateMessageDialog(DlgText, DlgType, Buttons, DefultButton);
// Set the Caption of th form
F.Caption:= DlgCaption;
// Change the buttons Captions
for I := Low(DlgButtons) to High(DlgButtons) do
TButton(F.Components[I+2]).Caption:= DlgButtons[I];
// Check for bidimode
if BidiMode = bdRightToLeft then
begin
TImage(F.Components[0]).Left:= (F.Width - (TImage(F.Components[0]).Left + TImage(F.Components[0]).Width));
TLabel(F.Components[1]).Left:= (TImage(F.Components[0]).Left - (TLabel(F.Components[0]).Width + 10));
end;
// Return the form
Result:= F;
end;

调用函数为
MyDialog('العنوان', 'النص', ['نعم', 'لا'], mtWarning, [mbYes, mbNo], bdRightToLeft, mbNo).ShowModal;


享受。

关于delphi - 更改 MessageDlg 语言 delphi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54051675/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com