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.
é 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
Curtir tópico
+ 0
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
.
.
.
[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
Clique aqui para fazer login e interagir na Comunidade :)