Q
消息框一般問題
0
A
回答
2
德爾福提供更好的解決方案來顯示一個消息框。 我應該使用MessageDlg函數。 MessageDlg(和MessageBox)函數的返回值表示用戶的選擇。所以,當你在MessageDlg上放置一個yes按鈕時,當用戶按下Yes按鈕時,返回值將是mrYes。 所以,你的代碼會是這樣的:
var
ShouldClose: Boolean;
begin
if MessageDlg('Do you really want to quit?', mtConfirmation,
[mbYes, mbNo], 0) = mrYes then
ShouldClose := True
else
ShouldClose := False;
end;
你也想關閉您的應用程序,如果用戶選擇是。 當你有一個普通的Delphi VCL應用程序時,你可以實現你的mainform的CloseQuery事件,當你嘗試關閉你的mainform(像點擊關閉按鈕)並且有一個變量CanClose時,執行CloseQuery事件。將CanClose設置爲True意味着MainForm可以關閉,將其設置爲false會阻止您的mainform關閉:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := MessageDlg('Do you really want to quit?', mtConfirmation,
[mbYes, mbNo], 0) = mrYes;
end;
3
首先,確保消息框中的按鈕與文本匹配。所以如果文字是「你真的想退出嗎?」那麼按鈕應該是「是」和「否」。
其次,使用適當的常量,以便稍後您的代碼更容易閱讀。那將是:
var
Res: integer;
Res := Application.MessageBox('Do you really want to exit?', 'Are you sure?',
MB_ICONQUESTION or MB_YESNO);
結果將是IDYES或IDNO。因此,假設呼叫是主窗體的方法裏面,你會用它想:
if Res = IDYES then
Close;
如果從其他地方調用該方法,你也可以撥打
if Res = IDYES then
Application.Terminate;
編輯:請不要也檢查出Vista User Inteface Guidelines on dialog boxes其狀態:
不必要的確認是煩人
相關問題
- 1. 問題與消息框
- 2. 一般問題
- 3. 一般C#問題
- 4. rsync一般問題
- 5. php一般問題
- 6. p:datatable一般問題
- 7. C++一般問題
- 8. CoreData一般問題
- 9. 鼠標鉤子和消息框問題
- 10. C#消息框最小化問題
- 11. 的Windows Phone 8的消息框問題
- 12. 在asp.net問題中顯示消息框
- 13. 消息框掛鉤在c問題
- 14. Windows窗體 - 顯示來自消息框的消息的問題
- 15. 添加消息,彈出消息框,C#noob問題
- 16. 如何本地化ActiveRecord消息一般?
- 17. 一般TableView問題 - Swift
- 18. Exp:resso商店一般問題
- 19. 一般MonoTouch開發問題
- 20. 一般TOAD連接問題
- 21. SurfaceView/CanvasView一般問題
- 22. 後記一般問題
- 23. 休眠一般問題
- 24. 一般聯網問題
- 25. Python編程一般問題
- 26. NSLog延遲一般問題?
- 27. Windows Azure的一般問題
- 28. 一般的XCode UI問題
- 29. Android的一般問題
- 30. 一般問題集,python
MessageDlg很好,但沒有本地化。如果他正在編寫非英文程序並且不使用任何方法進行本地化,我建議使用Application.MessageBox。 Application.MessageBox,將在windows本地化版本中加載windows對話框。 – 2009-02-09 13:02:05