Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: AndreaM - Giugno 12, 2017, 07:02:21 pm

Titolo: MaskEdit
Inserito da: AndreaM - Giugno 12, 2017, 07:02:21 pm
Salve a tutti,
Ho dei problemi con il funzionamento di MaskEdit, per capire il problema prendete un MaskEdit e posizionato sulla form e date ad esempio come valore di EditMask "00:00:00;1;_" in pratica per inserire ore minuti e secondi. Posizionate poi un bottone (non deve far nulla, serve solo per spostare il focus su un componente diverso) sulla maschera.
Avviato il programma entrando sul MaskEdit digitiamo un'orario valido, e poi click sul bottone. Il focus si sposta ed in questo caso la validazione del campo va a buon fine (non ci sono messaggi di errore). Rientriamo nel MaskEdit con l'intenzione di cancellare l'orario! Ovvero si vuole riportare il MaskEdit come prima di essere entrato la prima volta. Usciamo dal controllo facendo click sul bottone. Ora comparirà il messaggio:
"The current text not match the specified mask".
Se non si digita nuovamente un orario valido non è più possibile uscire dal MaskEdit!!
Nel caso io volessi lasciare il campo senza un dato valido per la maschera? Come posso fare?
Grazie a tutti.
Andrea.
Titolo: Re:MaskEdit
Inserito da: Stilgar - Giugno 12, 2017, 10:25:29 pm
Codice: [Seleziona]
if FValidare then
  begin
    MaskEdit1.EditMask := '00:00:00;1;_';
    MaskEdit1.ValidateEdit;
  end
  else
  begin
    MaskEdit1.EditMask := '';
  end;     

Prova con un pezzetto di codice di questo tipo dentro l'onEnd del componente MaskEdit che ti interessa disabilitare.
L'eccezione scatta sull'onexit.

Stilgar
Titolo: Re:MaskEdit
Inserito da: AndreaM - Giugno 13, 2017, 08:45:47 am
Grazie Stilgar,
Quando scrivi all'OnEnd ti riferisci all'OnEditingDone o OnExit del componente?
Andrea
Titolo: Re:MaskEdit
Inserito da: Stilgar - Giugno 13, 2017, 08:58:36 am
OnExit.
Sorry.
Comunque ci sono sempre i sorgenti dei componenti che possono essere consultati 😊
A parte il processo di controllo della maschera è abbastanza semplice da leggere e vedere cosa fa TMaskEdit. 😉
In questo caso l'handler esterno viene invocato dai metodi ereditati prima dei controlli specifici sulla maschera di input. Per cui la puoi disabilitare e abilitare come e quando vuoi la maschera
Stilgar