Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: Nicola - Gennaio 21, 2019, 07:35:05 am

Titolo: TDateTimePicker
Inserito da: Nicola - Gennaio 21, 2019, 07:35:05 am
Avrei bisogno del vostro aiuto:
inserendo l'oggetto in oggetto(!), ho questo problema:
al primo accesso il cursore si posizione sul giorno come da immagine 1; inserisco una qualsiasi data ovviamente digitando giorno, mese e anno; se esco dalla form e poi ci rientro il cursore si posiziona sull'anno (immagine 2), cosa alquanto scomoda in quanto di norma la data si inserisce partendo dalla modifica del giorno.
Come si potrebbe intervenire?
Grazie
Titolo: Re:TDateTimePicker
Inserito da: bonmario - Gennaio 21, 2019, 08:12:04 am
Cosa intendi con "se esco dalla form e poi ci rientro"?

Ciao, Mario
Titolo: Re:TDateTimePicker
Inserito da: Nicola - Gennaio 21, 2019, 09:19:59 am
Brevemente: non sono molto soddisfatti di come vengono gestiti i risconti nel gestionale che utilizzo, quindi ho pensato di crearmi qualche cosa che faccia esattamente ciò che mi serve.
Perciò ho una Form con un elenco di tutti i risconti inseriti (Form1); quando seleziono un elemento della griglia, ad esempio il 1°, si apre un altra Form (Form2), con il dettaglio del risconto e la possibilità di modificarlo. Terminata la modifica lo salvo e chiudo la Form2 (.Close); seccessivamente se vado a selezionare il 2° o 3° elemento all'apertura della Form2 il cursore si posiziona sull'anno e non sul giorno.
Titolo: Re:TDateTimePicker
Inserito da: bonmario - Gennaio 21, 2019, 11:15:57 am
Credo che dipenda dal fatto che tu "Chiudi" il form e poi lo "riapri", quindi lui si ricorda dove eri per ogni elemento del form.
Dovresti creare il form e poi distruggerlo ogni volta.

Ciao, Mario
Titolo: Re:TDateTimePicker
Inserito da: Nicola - Gennaio 21, 2019, 11:43:11 am
Si l'ho pensato anche io, pertanto cercavo un qualche metodo tipo "Set.Focus" che mi posizionasse sul giorno
Titolo: Re:TDateTimePicker
Inserito da: bonmario - Gennaio 21, 2019, 11:54:23 am
Se guardi i sorgenti del TDateTimePicker, ci sono dei metodi che permettono di farlo, ma sono "protected".
Potresti:
- fare una richiesta nel BugTracker per renderli disponibili
- modificare tu il codice, sapendo però che se scegli questa strada, ad ogni aggiornamento perderesti le modifiche ...
- Se invece vuoi fare un po' di lavoro in più, potresti creare un tuo componente che eredita tutto il codice del TDateTimePicker, ed implementa questa nuova funzionalità

Ciao, Mario
Titolo: Re:TDateTimePicker
Inserito da: schumi - Gennaio 21, 2019, 06:01:59 pm
...oppure prova un 'altro componente, io sono passato al pacchetto JujiboUtils e per l'uso che ne faccio io lo preferisco.

ciao
Titolo: Re:TDateTimePicker
Inserito da: Nicola - Gennaio 23, 2019, 07:41:31 am
Per bonmario: troppo complesso per le mie conoscenze, ho guardato il sorgente dell'oggetto ma non trovo dove viene posizionato il focus.
Per schumi: ho inserito il componente ma il problema rimane uguale.
Grazie in ogni caso per il tempo dedicatomi.
Titolo: Re:TDateTimePicker
Inserito da: bonmario - Gennaio 23, 2019, 08:08:28 am
Per bonmario: troppo complesso per le mie conoscenze, ho guardato il sorgente dell'oggetto ma non trovo dove viene posizionato il focus.

Questa:
Codice: [Seleziona]
    procedure SelectDateTimePart(const DateTimePart: TDateTimePart);

che però è tra le "private"

Se non fosse tra le "private", passandogli come parametro "dtpDay", dovrebbe spostarsi sul giorno.

Ciao, Mario