Mumble… mumble…
ho un vecchio progetto dove utilizzavo la stessa logica di inserimento diretto in tabella… ero alla prima barba…
devo cercarlo, ma a spanne, devi agire su keypress
if key='.' then key:=',';
il problema (che non ricordo come) è che devi intercettare la colonna.
dbgrid.column[x] qualcosa del genere. l'approccio l'ho abbandonato per evitare digitazioni accidentali dell'utente, optando per un menu popup con ‘modifica’ ‘Inserisci’ ed ‘elimina’ ed utilizzando un form dedicato all'inserimento e alla modifica con i relativi pulsanti ‘conferma’ e ‘annulla’.
Quello che vuoi fare è fattibile, anche se sconsigliato, solo il tempo di spolverare quel progetto e ti mando la traccia.
considera che il metodo OnKeyPress vale per tutta la tabella, con un case dbgrid.column of e devi intercettare se sei nella/e colonna/e giusta così puoi sostituire i caratteri digitati (virtual key) autorizzando solo i numeri e solo una volta il separatore decimale.
Non ricordo come intercettavo la colonna (l'utente poteva scrivere la quantità e spostarsi al prezzo di un altro record o al campo sconto, mentre i calcoli si aggiornavano in automatico).
il primo problema è sapere in quale record clikka l'utente e per questo puoi intervenire sul dataset all'evento OnDataChange per trovare il record se diverso da quello in cui si stava modificando il record.
il secondo problema è quello di capire in quale campo sta andando in modifica (prezzo, quantità, altro…) che può essere sempre dello stesso record.
25/03/2024 - danielito ha scritto:
Utilizzando il campo dbEdit non ho problemi,
perchè la tabella devi vederla come un insieme di caselle DBEdit. bisogna intercettare la colonna ed agire su quella.