GARANTIR DESCONTO

Fórum Figura no DBGrid (checkbox) #266730

30/01/2005

0

Amigos, boa noite.
é o seguinte:

tenho um dbgrid, q aponta para uma tabela no banco de dados firebird.

os campos que eu quero mostrar como checkbox sao do tipo smallint, com valor 0 e 1
0 unchecked
1 checked

so que quero dar um charme a mais no momento de apresentar o checkbox no dbgrid.

exemplo:
tenho o codigo para mostrar o checkbox normalmente num dbgrid, so que o checkbox que eu quero mostrar é uma figura (figura de checkbox checked)..

veja o codigo abaixo:
procedure TfrmLayOutImportacao.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
Const
CtrlState : array[Boolean] of Integer = (DFCS_BUTTONCHECK,
DFCS_BUTTONCHECK or DFCS_CHECKED);
var
DesenhoCheckBox : TRect;
fig:TBitMap;
pos:TRect;
NomeCampo : String;

begin

if not Assigned(Column.Field) then
Exit;

NomeCampo := UpperCase(Column.Field.FieldName);
if (NomeCampo = ´IMPORTAR´) or (NomeCampo = ´CAMPOOBRIGATORIO´) or
(NomeCampo = ´CAMPOCHAVE´) then
begin
fig := TBitMap.Create;
if Column.Field.Value = 1 then
try
fig.LoadFromFile(ExtractFilePath(Application.ExeName)+´check.bmp´);
except
end;

pos.Left := (Column.Width + Fig.Width) div 2;
pos.Top := 0;
DBGrid1.Canvas.Draw(pos.left + Rect.left, pos.top + rect.top, Fig);
Fig.Free;

end;

end;


==ta funcionando perfeitamente, quando o campo tem valor 1 ele mostrar a figura que eu mandei.
Unico detalhe, sai o valor do campo e tambem esta figura de checkbox..

quero apenas que saia a figura, sem o valor do campo

vai aparecer uma caixa de checkbox, e se for checked, sai a figura encima do checkbox.
se nao tiver checked, sai apenas a caixa de checkbox.

abracos.Obrigado.


Pedih

Pedih

Responder

Posts

01/02/2005

Arkmeds

basta adicionar estas linhas comentadas no ultimo bloco de codigo

.
.
.


[b:0dcd1f8f4b]dbGrid1.Canvas.FillRect(Rect); // Limpa o campo do grid
pos.Left := (Column.Width - fig.Width) div 2; //centraliza figura[/b:0dcd1f8f4b]
pos.Top := 0;
DBGrid1.Canvas.Draw(pos.left + Rect.left, pos.top + rect.top, Fig);
Fig.Free;
,.
.
.

Espero ter ajudado


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar