Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [DELPHI] Personalizzare gli showmessage

    Ciao ragà...
    sapreste dirmi se ci sono altri comandi tipo 'showmessage'?
    Gli Showmessage li posso personalizzare o posso soltanto scrivere il messaggio da visualizzare?
    Ad esempio vorrei cambiargli il colore e il titolo poichè come titolo spunta il nome del progetto (project1)..
    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301

    Re: [DELPHI] Personalizzare gli showmessage

    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!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.