Chcę utworzyć okno dialogowe z ostrzeżeniem, które zapyta użytkowników, czy informacje wpisane podczas rejestracji są poprawne, i prosi go o dodanie, że chce kontynuować lub zamknąć to dialog i popraw jego informacje.Jak wyświetlić okno dialogowe z dwoma przyciskami (Kontynuuj/Zamknij) w Delphi
Odpowiedz
var
td: TTaskDialog;
tb: TTaskDialogBaseButtonItem;
begin
td := TTaskDialog.Create(nil);
try
td.Caption := 'Warning';
td.Text := 'Continue or Close?';
td.MainIcon := tdiWarning;
td.CommonButtons := [];
tb := td.Buttons.Add;
tb.Caption := 'Continue';
tb.ModalResult := 100;
tb := td.Buttons.Add;
tb.Caption := 'Close';
tb.ModalResult := 101;
td.Execute;
if td.ModalResult = 100 then
ShowMessage('Continue')
else if td.ModalResult = 101 then
ShowMessage('Close');
finally
td.Free;
end;
end;
+1 dla kompletnej odpowiedzi, (chociaż 'close' jest bardzo złym podpisem dla przycisku ze względu na jego ogólną niejednoznaczność i brak znaczenia :-) – Johan
@DavidHeffernan - Tak, nie będzie działać w XP. –
.. i tylko wtedy, gdy motywy są włączone. Pamiętam, że Dawid zanotował coś takiego .. update - [tutaj] (http://stackoverflow.com/a/6344538/243614) –
jeśli Delphi następnie
if mrYes=MessageDlg('Continue?',mtwarning,[mbYes, mbNo],0) then
begin
//do somthing
end
else
exit; //go out
co z pisaniem (Kontynuacja i zamknięcie) zamiast (Tak i Nie)? –
możesz to tylko dla wiadomości: mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp – PresleyDias
Możesz, przetestowałem to teraz ... – TLama
podstawie this:
procedure HookResourceString(rs: PResStringRec; newStr: PChar);
var
oldprotect: DWORD;
begin
VirtualProtect(rs, SizeOf(rs^), PAGE_EXECUTE_READWRITE, @oldProtect);
rs^.Identifier := Integer(newStr);
VirtualProtect(rs, SizeOf(rs^), oldProtect, @oldProtect);
end;
const
SContinue = 'Continue';
SClose = 'Close';
procedure TForm1.Button1Click(Sender: TObject);
begin
HookResourceString(@SMsgDlgOK, SContinue);
HookResourceString(@SMsgDlgCancel, SClose);
if MessageDlg('My Message', mtConfirmation, [mbOK, mbCancel], 0) = mrOK then
begin
// OK...
end;
end;
+1, możesz również użyć ['hook'] (http://www.codeguru.com/cpp/wp/win32/ messagebox/article.php/c10873), aby uzyskać uchwyt do okna komunikatu, a następnie użyć ['GetDlgItem'] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms645481%28v=vs .85% 29.aspx), aby uzyskać uchwyt przycisku, który chcesz zmienić i ustawić jego tekst za pomocą ['SetDlgItemText'] (http://msdn.microsoft.com/en-us/library/windows/desktop/ ms645521% 28v = vs.85% 29.aspx); całkiem przesadnie, wiem :) Ale najgorsze w tym rozwiązaniu jest to, że musisz użyć biblioteki DLL dla tego haka. – TLama
http://www.swissdelphicenter.ch/torry/showcode.php?id=946? – TLama
ouch! Całkiem drakońskie! –
var
AMsgDialog: TForm;
abutton: TButton;
bbutton: TButton;
begin
AMsgDialog := CreateMessageDialog('This is a test message.', mtWarning,[]);
abutton := TButton.Create(AMsgDialog);
bbutton := TButton.Create(AMsgDialog);
with AMsgDialog do
try
Caption := 'Dialog Title' ;
Height := 140;
AMsgDialog.Width := 260 ;
with abutton do
begin
Parent := AMsgDialog;
Caption := 'Continue';
Top := 67;
Left := 60;
// OnClick :tnotyfievent ;
end;
with bbutton do
begin
Parent := AMsgDialog;
Caption := 'Close';
Top := 67;
Left := 140;
//OnClick :tnotyfievent ;
end;
ShowModal ;
finally
abutton.Free;
bbutton.Free;
Free;
end;
- 1. Jak wyświetlić okno dialogowe postępu między dwoma działaniami?
- 2. Jak wyświetlić okno dialogowe z PreferenceFragment?
- 3. Okno dialogowe z komunikatem z tekstem i polem wyboru oraz dwoma przyciskami
- 4. Jak wyświetlić wbudowane okno dialogowe kopiowania plików?
- 5. Okno alertów systemu Android z jednym, dwoma i trzema przyciskami
- 6. Jak wyświetlić niestandardowy UserControl jako okno dialogowe?
- 7. Jak utworzyć niestandardowe okno dialogowe z dwoma datepicker?
- 8. Usterka uwierzytelniania Delphi https wyskakuje okno dialogowe
- 9. jak stworzyć okno z dwoma przyciskami, które zostanie otwarte nowe okno
- 10. Symfony i gałązka: Jak wyświetlić okno dialogowe z potwierdzeniem
- 11. Jak wyświetlić okno dialogowe onbeforeunload w razie potrzeby?
- 12. Jak wyświetlić okno dialogowe uwierzytelniania w C# .Net 3.5 SP1
- 13. Jak utworzyć niestandardowe okno dialogowe w vscode?
- 14. android - Jak wyświetlić okno dialogowe po zakończeniu aktywności
- 15. Jak wyświetlić okno dialogowe "Windows nie może otworzyć tego pliku"?
- 16. PHP: Pokaż okno dialogowe potwierdzenia Yes/no
- 17. Jak wyświetlić okno dialogowe Tak/Nie na Androidzie?
- 18. Jak wyświetlić okno dialogowe otwierania/zapisywania asp net mvc 4
- 19. UIAlertView z dwoma obszarami tekstowymi i dwoma przyciskami
- 20. Jak wyświetlić tylko jedno okno dialogowe na raz?
- 21. W jaki sposób można wyświetlić okno dialogowe modułu jquery?
- 22. Okno dialogowe/wyskakujące okno z obrazem Androida
- 23. Niestandardowe okno dialogowe z RecyclerView
- 24. Jak modlić okno dialogowe jQuery?
- 25. Pokaż okno dialogowe alertu w rozszerzeniu chrome
- 26. Niestandardowe okno dialogowe w C#?
- 27. Wyszukaj okno dialogowe folderu
- 28. okno dialogowe blendera wejściowego
- 29. Potwierdź okno dialogowe w angularjs
- 30. Android: okno dialogowe bez cienia wokół niego
Nawet [ 'Task Dialog'] (http://msdn.microsoft.com/en-us/library/windows/desktop/bb760441%28v=vs.85%29.aspx) w nowych wersjach systemu Windows nie ma wspólnych przycisków z tym podpisem. Mówiąc o oknie dialogowym zadania, możesz użyć przycisków niestandardowych (zobacz zrzut ekranu z linku). W standardowym ['MessageBox'] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms645505%28v=vs.85%29.aspx) IMHO nie ma możliwości zmiany napisów na przyciskach . Tak więc najprościej jest stworzyć własną, ale może się mylę ... Może ['this'] (http://www.codeguru.com/cpp/wp/win32/messagebox/article.php/c10873) droga ? – TLama
@TLama Okno dialogowe zadań pozwala nadać przyciskom dowolną nazwę, którą masz ochotę –
@ David, mówiłem o 'dwCommonButtons', tych, których nie możesz zmienić lub czy się mylę? – TLama