Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

CheckBox in una DBGrid

63 views
Skip to first unread message

Paolo Turchetti

unread,
Jun 23, 1998, 3:00:00 AM6/23/98
to

C'e' qualcuno che possa spiegarmi brevemente come piazzare un checkbox
in una DBGrid in sostituzione dei campi booleani ??
Ho trovato qualcosa ma non sembra funzionare molto bene (problemi durante
la navigazione nella grid usando le barre di scorrimento).

Grazie, Paolo
--

Ansaldo Sistemi Industriali
Stabilimento di Monfalcone
Ufficio Approvvigionamenti - P. Turchetti
work e-mail turc...@emr.ain.ansaldo.it
home e-mail pturc...@palmanet.it

Rob

unread,
Jun 23, 1998, 3:00:00 AM6/23/98
to

On 23 Jun 1998 12:55:38 GMT, "Paolo Turchetti"
<turc...@emr.ain.ansaldo.it> wrote:

>C'e' qualcuno che possa spiegarmi brevemente come piazzare un checkbox
>in una DBGrid in sostituzione dei campi booleani ??
>Ho trovato qualcosa ma non sembra funzionare molto bene (problemi durante
>la navigazione nella grid usando le barre di scorrimento).
>
>Grazie, Paolo
>--

Sto finendo di realizzare una mia DBGrid che risolva questo problema,
ed inoltre aggiunga anche la possibilità di inserire dei combobox.
Però non ancora finito.
Se ti interessa il mio componente scrivimi via e-mail, ne possiamo
parlare.
L'idea cominque è quella di gestire il repaint del campo in questione.

Ciao, Rob.
_________________________________________________
Roberto Gerola

e-mail: NOSPAMr...@tin.it
WWW: http://space.tin.it/computer/rgerola
_________________________________________________

Per inviarmi email togliere NOSPAM dal mio indirizzo.

Piero Bonanno

unread,
Jun 23, 1998, 3:00:00 AM6/23/98
to

Paolo Turchetti ha scritto nel messaggio
<01bd9ea6$958c46c0$31a0...@pcgo049.ai.ansaldo.it>...


>C'e' qualcuno che possa spiegarmi brevemente come piazzare un checkbox
>in una DBGrid in sostituzione dei campi booleani ??
>Ho trovato qualcosa ma non sembra funzionare molto bene (problemi durante
>la navigazione nella grid usando le barre di scorrimento).
>
>Grazie, Paolo
>--

Una possibile soluzione è la seguente:

Poni la proprietà DefaultDrawing della griglia a False. Inserisci poi 2
componenti TImage, ognuno con una bitmap che rappresenta uno stato del
checkBox (spuntato/non spuntato).
Scrivi poi la seguente procedura in risposta all'evento OnDrawDataCell:

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin
if not (gdFocused in State) then Exit;
with DBGrid1.Canvas do begin
FillRect(Rect);
(*Assume che <COLONNA DELLA TABELLA> sia booleano*)
if Field.FieldName='<COLONNA DELLA TABELLA>' then begin
if Field.asBoolean=False then
Draw(Rect.left, Rect.top, Image1.Picture.Bitmap)
else Draw(Rect.left, Rect.top, Image2.Picture.Bitmap);
end
(*Scrive i campi testuali*)
else TextOut(Rect.Left+2, Rect.Top+2, Field.Text);
end; (*with*)
end;


Tieni conto però che ho supposto che gli altri campi siano puramente
testuali. Infatti ponendo DefaultDrawing a false, devi ridefinirti ogni
procedura di disegno della griglia. Non so cosa succede utilizzando la
proprietà Colums della griglia.
Ciao.

0 new messages