Gestire DecimalSeparator

di il
17 risposte

Gestire DecimalSeparator

Salve a tutti.
Ho una applicazione dove utilizzo il decimalseparator = ‘.’

Utilizzando il campo dbEdit non ho problemi, ma quando voglio modificare il campo importo dalla griglia dbgrid, mi da errore
"is not a valid bcd value", vorrei fare in modo che anche nella griglia posso utilizzare il puntino.

17 Risposte

  • Re: Gestire DecimalSeparator

    Dove hai specificato il campo currency?

  • Re: Gestire DecimalSeparator

    Nella dbgrid

  • Re: Gestire DecimalSeparator

    Anzi scusa non una lib dove imposto il campo cosi.
      FormatMask_View_EUR = '€ #,##0.00;€ -#,##0.00;€ #,##0.00';

    nella griglia cosi vedo il campo importo con il simbolo €.
    quando provo a modificarlo da errore.
    cmq anche se non inserisco questa formattazione da errore comunque

  • Re: Gestire DecimalSeparator

    Ma deve essere valuta o numero decimale generico?

    Nell'elenco dei campi dovrebbe esserci la voce relativa al separatore decimale.

    Adesso sono fuori e non ricordo dove si trova la proprietà.

    Puoi anche intercettare dbgrid.column[numero] per trattarlo come con il dbedit.

  • Re: Gestire DecimalSeparator

    25/03/2024 - danielito ha scritto:


    Anzi scusa non una lib dove imposto il campo cosi.
      FormatMask_View_EUR = '€ #,##0.00;€ -#,##0.00;€ #,##0.00';

    nella griglia cosi vedo il campo importo con il simbolo €.
    quando provo a modificarlo da errore.
    cmq anche se non inserisco questa formattazione da errore comunque

    Se valuta basta specificare (spuntare) la proprietà currency.

  • Re: Gestire DecimalSeparator

    Posso anche non far vedere la valuta..
    basta che non mi da errore. 

    currency non ho trovato proprietà.
    questà è la griglia.
    il mio cliente vuole utilizzare il “.” quindi ho impostato il decimal separator. ma qui da errore.

  • Re: Gestire DecimalSeparator

    25/03/2024 - danielito ha scritto:


    Posso anche non far vedere la valuta..
    basta che non mi da errore. 

    currency non ho trovato proprietà.
    questà è la griglia.
    il mio cliente vuole utilizzare il “.” quindi ho impostato il decimal separator. ma qui da errore.

    Vai sul dataset (quello dove specifichi la tabella da mostrare), fai doppio click, nella finestrella col tasto dx fai aggiungi tutti.

    Selezioni il campo valuta e nella finestra delle proprietà spunti currency.

    In questo modo non devi inserire ne simbolo valuta ne distinguere punto o virgola quando inserisci un importo.

    Togli la maschera che hai creato per non creare conflitti.

    Vado di memoria dallo smartphone…

  • Re: Gestire DecimalSeparator

    Non vedo l'errore…

  • Re: Gestire DecimalSeparator

    Non so se ho fatto bene,
    stesso errore.

    nella griglia inoltre non posso utilizzare il puntino.

  • Re: Gestire DecimalSeparator

    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.

  • Re: Gestire DecimalSeparator

    Ma il fatto che non posso digitare il “.” è normale ?

    riesco a individuare la colonna, ma ho sempre errore bcd value.

  • Re: Gestire DecimalSeparator

    26/03/2024 - danielito ha scritto:


    Ma il fatto che non posso digitare il “.” è normale ?

    riesco a individuare la colonna, ma ho sempre errore bcd value.

    Una domanda per chiarire: da un controllo DBEdit associato al campo riesci a usare la virgola, ma all'interno della DBGrid no?

  • Re: Gestire DecimalSeparator

    SE Inserisco un dbedit e associo il campo, riesco a mettere la “,”

  • Re: Gestire DecimalSeparator

    Allorin questo momento ho tolto il decimal separator dal progetto e nella griglia funziona tutto.
    sia nei campi dbedit che nella colonna della griglia ho usato il “if key='.' then key:=',';”

    sembra ok

Devi accedere o registrarti per scrivere nel forum
17 risposte