Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [Delphi] DBgrid

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    92

    [Delphi] DBgrid

    Salve!

    sulla mia tabella 'tab' ho dei valori numerici.
    il campoVal può avere valore 1 o 0,
    ma vorrei che sul DBGrid il valore 1 si visualizzasse
    come 'LIBERO' e il campo 0 come 'OCCUPATO'.

    E' una cosa possibile?
    Se si come posso fare?

    Grazie!
    Kate71

    Win2000 - Delphi7 - MySQL

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    50
    mhn....non potresti semplicemente usare Libero e Occupato in una cella DropDown sempre nella stessa DBGRID, è piu semplice e lineare.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    92
    mi serve solo sapere se è libera o occupata una data posizione!
    il DropDown non mi serve !
    dovrei fare troppe modifiche ... se passo da un valore
    numerico ad uno non numerico a questo punto del programma.

    Avevo anche pensato di colorare di verde..in alternativa
    le Row del DBGrid in cui il valore era uguale a 1.
    Ma non ci sono riuscita!

    Grazie cmq, per la tua celere risposta!

    Kate71

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    50
    mhn.....allora se quella soluzione non ti va bene, ne facciamo una adatta per te. :metallica
    Puoi mettere come testo sulla DBGRID un DROPDOWN con OCCUPATO e LIBERO e sulle funzioni GetText e SetText del Field un codice che nel GetText tramuta da numero 0 o 1 in Scritta, e nel SetText che tramuta il valore stringa OCCUPATO o LIBERO in numero. Non ho provato pero sarebbe un idea :mavieni:

    Va be ti auguro di trovare una soluzione il piu presto possibile :master:

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Una segnalazione visuale dello stato può essere di aiuto nella visualizzazione della griglia: potresti evidenziare, ad esempio, la cella relativa al campo dello stato con un colore verde per indicare il LIBERO, oppure ROSSO per indicare lo stato di occupato.

    Per gestire questa funzionalità, devi intercettare l'evento OnDrawColumnCell e scrivere codice simile al seguente:
    codice:
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
      case DataCol of
        0:
        begin
          if Column.Field.AsInteger = 1 then
            DBGrid1.Canvas.Brush.Color := clLime
          else
            DBGrid1.Canvas.Brush.Color := clRed;
          DBGrid1.Canvas.FillRect(Rect);
        end;
      end;
    end;
    Il costrutto case è stato usato per gestire il caso in cui questo evento dovesse essere utilizzato anche per intervenire sul disegno di altre colonne (in questo caso, solo la prima viene influenzata, avente indice 0, ma tu devi sostituire l'indice della tua colonna osservando la proprietà Columns dell'oggetto DBGrid). L'oggetto Column rappresenta appunto la colonna associata che ci permette anche di ottenere il riferimento al campo da ispezionare: se il valore intero vale 1 (stato "libero"), impostiamo un colore di sfondo verde, altrimenti impostiamo un colore rosso. La chiamata al metodo Canvas.FillRect consente di riempire il rettangolo della cella, passato come parametro, usando il colore selezionato.

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

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

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    50
    Si l'idea di alka è ottima pero sarebbe piu bello poterlo scrivere come testo....mhn....sto creando un nuovo Field derivato da quelli normali che permetta questa funzionalita...non so, in un futuro potrebbe servirmi.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    92
    Grazie Alka!
    Funziona perfettamente!
    Ieri avevo sperimentato qualcosa di simile...
    ma non aveva funzionato!!!
    Grazie anche a te Angbis!


    Kate71

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 © 2025 vBulletin Solutions, Inc. All rights reserved.