Originariamente inviato da carmelo81
sapreste dirmi se ci sono altri comandi tipo 'showmessage'?
Esiste la classica API MessageBox, meglio se richiamata attraverso l'oggetto Application, che richiama la finestra di dialogo fornita dal sistema operativo.
codice:
// Chiede conferma prima di procedere
if Application.MessageBox('Sei sicuro di voler chiudere il programma?',
'Mia applicazione', MB_ICONQUESTION + MB_YESNO) = IDYES then
begin
// Chiude il programma
Close;
end;
Questa istruzione ti consente di indicare il testo da visualizzare, la Caption della casella di messaggio più l'icona da utilizzare e i pulsanti da mostrare (attraverso delle costanti specifiche), ricevendo come valore di ritorno la risposta fornita dall'utente.
I testi che appaiono sui pulsanti sono resi nella lingua del sistema operativo.
A fianco di questa soluzione, esiste anche la funzione MessageDlg (unit Dialogs.pas) implementata interamente in Delphi; funziona in modo analogo, ma utilizza una lingua fissata da costanti (inglese).
codice:
if MessageDlg('Sei sicuro di voler chiudere il programma?',
mtConfirmation, mbOKCancel, 0) = mrOk then
begin
// Chiude il programma
Close;
end;
Originariamente inviato da carmelo81
Gli Showmessage li posso personalizzare o posso soltanto scrivere il messaggio da visualizzare?
Nel caso di MessageDlg, come avviene con ShowMessage, non è possibile modificare la Caption della casella contenente il messaggio, ma solo il testo contenuto al suo interno.
Comunque, salvo esigenze particolari, io ti suggerirei di usare sempre Application.MessageBox.
Originariamente inviato da carmelo81
Ad esempio vorrei cambiargli il colore e il titolo poichè come titolo spunta il nome del progetto (project1)..
Innanzitutto, userei un titolo più significativo al posto di "Project1" per il tuo progetto.
In secondo luogo, le funzionalità offerte da ciascuna casella di messaggio sono limitate ed è possibile intervenire su di esse scrivendo codice abbastanza complesso...secondo me, è meglio crearsi in questi casi una nuova finestra per i messaggi da utilizzare al posto di quella predefinita.
La unit Dialogs.pas permette di ottenere un riferimento alla form utilizzata per la visualizzazione dei messaggi usando la funzione CreateMessageDialog... ma è possibile accedere all'oggetto solo attraverso l'interfaccia della classe base TForm, senza nemmeno la possibilità di eseguire un cast poichè il tipo specifico di form utilizzato è "nascosto" alle unit esterne a Dialogs.pas. Caratteristiche come il colore e il font possono essere modificate con comodo, ma altri aspetti sono preclusi, a meno di non utilizzare le funzioni della RTTI di Delphi, decisamente complesse e faticose per la tua esigenza (almeno, secondo me).
In definitiva, mi accontenterei delle funzionalità delle finestre a disposizione, delle loro caratteristiche e delle procedure che le richiamano o, in alternativa, scriverei una nuova finestra di dialogo (nient'altro che una TForm specializzata) in caso di esigenze "speciali" (ad esempio, l'aggiunta di suggerimento in fondo alla finestra, la possibilità di aggiungere nuovi pulsanti a quelli predefiniti e così via).
Happy implementation!