我知道這個問題自從之前(例如Best way to show customized message dialogs),但我仍然沒有找到我想要的東西。按鈕的自定義標題的通用對話框
我開始是這樣的:
class function TAttracsForm.MessageDlg(const aMsg: string; aDlgType: TMsgDlgType; Buttons: TMsgDlgButtons; aCaptions: array of String; aDefault: TMsgDlgBtn): TModalResult;
var
vDlg: TForm;
i: Integer;
begin
if aButtons.Count = aCaptions.Count then
begin
vDlg := CreateMessageDialog(aMsg, aDlgType, Buttons);
try
for i := 0 aCaptions.Count - 1 do
TButton(vDlg.FindComponent(Buttons[i].Caption)).Caption := aCaptions[i];
vDlg.Position := poDefaultPosOnly;
Result := vDlg.ShowModal;
finally
vDlg.Free;
end;
end;
end;
和呼叫會是什麼樣子:
if (MessageDlg('Really quit application ?', mtWarning,
[mbNo, mbCancel, mbYes], {'No save', 'Cancel', 'Save'}) = mrYes) then
但當然,上面的代碼不進行編譯。我不知道如何在循環中獲取一個集合中的一個項目,以及如何在開始時獲得它的總數。
也許你可以使用TTaskDialog或前Vist之一有能力的模擬。 – 2011-03-24 10:56:38
+1我同意Vista任務對話框是可用的方式。 – 2011-03-24 11:08:19
我的應用程序只在XP和Server 2003 R2上運行,所以我不能使用TTaskDialog。 – 2011-03-24 12:15:41