Como colocar um CheckBox em uma coluna do DBGrid? – Show Delphi

DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais

INICIANTES

Aprenda a programar de um modo simples e fácil.

Saiba mais

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
voltar

PARA QUEM GOSTA DE DELPHI

Como colocar um CheckBox em uma coluna do DBGrid?

 

Algumas vezes temos uma lista de dados onde desejamos selecionar alguns
itens. Uma forma elegante é colocando uma coluna com CheckBox, para
que o usuário possa marcar o que desejar.

Mas omo fazer isso se uso de componentes de terceiros?

Existe duas formas:

Caso o seu Field do seu dataset for do tipo Boolean, o DBGrid irá
montar automaticamente o checkbox na coluna.

Para os demais casos, podemos colocar um código que faça isso.

1º Etapa – desenhar os check boxes no dbgrid.

No evento OnDrawColumnCell do DBGrid.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  Check: Integer;
  R: TRect;
begin
  inherited;
 
  if ((Sender as TDBGrid).DataSource.Dataset.IsEmpty) then
    Exit;
 
  // Desenha um checkbox no dbgrid
  if Column.FieldName = 'SELECAO' then
  begin
    TDBGrid(Sender).Canvas.FillRect(Rect);
 
    if ((Sender as TDBGrid).DataSource.Dataset.FieldByName('SELECAO').AsInteger = 1) then
      Check := DFCS_CHECKED
    else
      Check := 0;
 
    R := Rect;
    InflateRect(R, -2, -2); { Diminue o tamanho do CheckBox }
    DrawFrameControl(TDBGrid(Sender).Canvas.Handle, R, DFC_BUTTON,
      DFCS_BUTTONCHECK or Check);
  end;
end;

Neste exemplo foi utilizado um field de nome SELECAO,
onde é testado o mesmo.
Caso o seu valor seja 1, desenha um check marcado,
senão é desenhado um check desmarcado.

2º Etapa – Código para marcar ou desmarcar o Checkbox.

No Evento OnDblClick do DbGrid, é necessário um código
para atualizar o dataset que está vinculado ao datasource do dbgrid.

1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
  if ((Sender as TDBGrid).DataSource.Dataset.IsEmpty) then
    Exit;
 
  (Sender as TDBGrid).DataSource.Dataset.Edit;
 
  (Sender as TDBGrid).DataSource.Dataset.FieldByName('SELECAO').AsInteger :=
    IfThen((Sender as TDBGrid).DataSource.Dataset.FieldByName('SELECAO').AsInteger = 1, 0, 1);
 
  (Sender as TDBGrid).DataSource.Dataset.Post;
end;

Neste exemplo fiz uso da função IfThen que está disponível na unit
Math do Delphi.

Como este código é para você ter um DBGrid funcionando om CheckBox muito bem.

Qualquer dúvida, poste comentários no post.

Facebook Comments

Posts Relacionados

  • Giovani Da Cruz
  • 106 views
  • 1 comentários
  • 11 de novembro de 2016

Uma resposta para “Como colocar um CheckBox em uma coluna do DBGrid?”

  1. Como comentado por Ivan Cezar no grupo no skype,o IfThen para string está localizado na unit System.StrUtils. Então acredito se der uses da unit, o código já irá funcionar com string também.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Ir ao topo

© 2016 Infus Soluções em Tecnologia - Todos os Direitos Reservados