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

Lembre de declarar Math na seção uses.

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;

Lembrando que neste exemplo foi feito uso da função IfThen que está disponível na unit Math do Delphi.

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

Para ajudar no entendimento, asista a explicação do exemplo.

Se preferir, podes fazer o download dos fontes do exemplo.

Download “Exemplo CheckBox no DBGrid”

CheckDBGrid.zip – Baixado 277 vezes – 7,90 KB

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

Aquele abraço.

Facebook Comments Box
  • Giovani Da Cruz
  • 24.103 views
  • 6 comentários
  • 11 de novembro de 2016

Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!

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

  2. Gilvan Jr disse:

    Muito obrigado pela ajuda , parabens

  3. Eduardo disse:

    Eu Uso Firebird como Fazer isso com o banco Firebird?

  4. Rafael disse:

    Como faço para não exibir a numeração apenas o check?

Deixe um comentário

Ir ao topo

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