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
>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.
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.