Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [Delphi] - eventi

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    389

    [Delphi] - eventi

    Possibile che se l'utente si posiziona con il mouse su qualsiasi controllo e precedentemente non ha inserito in un controllo il valore che è obbligatorio inserire scatti un evento in modo tale che possa avvisare che quel campo non è stato inserito e ritorna il focus su quel controllo???

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Immagino tu intenda avere un comportamento simile a quelle che si ottiene con i controlli MaskEdit...

    Purtroppo gli eventi OnEnter e OnExit vengono eseguiti per segnalare l'acquisizione o la perdita del focus dopo che il controllo lo ha rispettivamente acquisito o perso, perciò qualsiasi tentativo di generare un'eccezione o impedire lo spostamento del focus fallisce poichè questo è già avvenuto, sebbene non sia ancora rappresentato visualmente.

    L'unica soluzione è quella di crearsi un controllo personalizzato derivato da TEdit (o dal controllo che si intende utilizzare come base) e intercettare i messaggi WM_SETFOCUS e WM_KILLFOCUS.

    In genere, tendo ad odiare un comportamento di questo tipo da parte dei controlli: potrei voler abbandonare in qualsiasi momento il controllo per fare qualcos'altro senza per questo implicitamente indicare che il dato inserito mi aggrada. Solo quando si preme un pulsante di conferma si passa alla validazione dei valori inseriti nei vari controlli visuali segnalando opportunamente gli errori.

    Una seconda tecnica che ho visto utilizzare con profitto è questa: all'uscita dal controllo (evento OnExit) si esegue una "prevalidazione" del dato inserito (analogamente a quanto si fa nel confermare i dati del form): se il dato non è valido, si imposta la proprietà Color ad un valore opportuno, differenziando il colore del controllo da quello degli altri onde segnalare che quel dato, probabilmente, non verrà accettato.
    Secondo me, questo è un buon compromesso tra l'usabilità del programma e la semplicità della sua implementazione.

    Infine, puoi anche cercare qualche controllo aggiuntivo nell'apposita sezione del sito Torry Delphi's Pages.

    Ciao!
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.