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

    [Delphi] - inserimento licenza stile windows

    devo realizzare una finestra di inserimento del numero di licenza d'uso stile windows, cioè ho 5 campi edit e vorrei che quando inserisco i primi 5 caratteri nel primo campo mi passi subito al secondo.
    io ho pensato di implementarlo controllando sul key_down la lungheezza del campo e se = a 5 andare al successivo, ma se stò modificando il terzo carattere ad esempio, è brutto che va al successivo quindi dovrei controllare la posizione del cursore nel componente, ma non so come fare.

    Ancora una cosa, vorrei che durante l'inserimento sia attivato l'overwrite, cioè ce ricopre quello che ho gia scritto, c'è un'istruzione o devo gestirlo a mano (eventualmente come)?

    è fattibile o è meglio usare un maskedit con l'apposita maschera? :sexpulp:

    saluti

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Io ho fatto questa prova: ho disposto sul forum 3 controlli Edit e ho associato loro lo stesso evento OnKeyUp definendolo in questo modo:
    codice:
    procedure TForm1.EditsKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
    var
      Edit: TEdit;
    begin
      Edit := (Sender as TEdit);
      if (Length(Edit.Text) = Edit.MaxLength) and (Edit.SelStart = Edit.MaxLength) then
        Perform(CM_DIALOGKEY, VK_TAB, 0);
    end;
    Il codice identifica l'Edit che ha il focus e riceve l'evento di pressione del tasto. Quando la lunghezza del testo contenuto (che va limitata tramite la proprietà MaxLength) raggiunge la lunghezza massima consentita e il cursore si trova nella posizione terminante del testo, viene simulata la pressione del tasto TAB per passare al controllo successivo.

    Se modifichi parte del testo che non si trovi alla fine dello stesso, non accade nulla, a meno che non premi il pulsante Fine e allora verrai automaticamente trasportato alla casella di testo successiva.

    Il meccanismo può essere ovviamente migliorato e ampliato.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    grazie alka, rispetto a quello che avevo fatto io c'è giustamente la seconda parte dell'if e ho usato il sendmessage per dare il focus al campo successivo, del resto anche io avevo una variavile Edit di tipo tEdit

    hai suggerimenti per come gestire la modalità di sovrascrittura?

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da bDaniele
    hai suggerimenti per come gestire la modalità di sovrascrittura?
    Io userei una MaskEdit, in modo da non complicarsi troppo la vita per una funzionalità che, alla fine dei conti, è secondaria.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  5. #5
    Originariamente inviato da alka
    Io userei una MaskEdit, in modo da non complicarsi troppo la vita per una funzionalità che, alla fine dei conti, è secondaria.
    sono perfettamente d'accordo anche se ho risolto con un metodo alternativo abbandonando l'idea di prima.

    Grazie mille.

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.