Mostrando postagens com marcador CheckBox. Mostrar todas as postagens

Mostrando postagens com marcador CheckBox. Mostrar todas as postagens

CheckBox no DBGrid do Delphi


Simular CheckBox no DBGrid, sempre foi algo muito trabalhoso,
mas existe uma jeito simples e rápido de fazer essa simulação.

Adicione no formulário um: TDBGrid,TDataSource e
TClientDataSet.
-> O TDataSource e o TClientDataSet ambos estão na paleta Data Access.
-> O TDBGrid está na paleta Data Controls.

No DBGrid1, para fazer a ligação dele com o DataSource, em Propriedade faça:
-> DataSource = DataSource1
Para desativar o modo Edição no DBGrid, na Propriedade Options faça:
-> dgEdition = False

No DataSource1, para fazer ligação dele com o ClientDataSet, em Propriedade faça:
-> DataSet = ClientDataSet1

No ClientDataSet1, faça:
-> dê um duplo clique no ClientDataSet1, ou clique com o botão direito do mouse, e escolha a opção Fields Editor ...

Uma janela será aberta.
Na parte vazia (em branco) clique com o botão direito do mouse, e escolha a opção NewField.


Crie um campo com as seguintes características:

Tipo (type): StringTamanho (size): 1
Nome (name): ATIVO


Após o preenchimento, clique em OK, e em seguida feche a janela, onde o campo ATIVO está
aparecendo.











Para Ativar o ClientDataSet:
-> clique com o botão direito do mouse em ClientDataSet, e clique em Create DataSet.





























-> na Propriedade Active coloque como True.




















Se todos os procedimentos acima tiverem sido seguidos, nesse momento o campo ATIVO, já aparecerá no DBGrid.


Em Eventos do DBGrid siga as instruções abaixo.

Para Desenhar o CheckBox no DBGrid (use o procedimento DrawColumnCell do DBGrid):

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var

Check: Integer;
R: TRect;
begin
//Desenha um chec
kbox no dbgrid
if Column.FieldName = 'ATIVO' then begin
DBGrid1.Canvas.FillRect(Rect);

Check := 0;
if
ClientDataSet1Ativo.AsString = 'X' then
Ch
eck := DFCS_CHECKED
else Check := 0;
R:=Rect;
InflateRect(R,-2,-2
); {Diminue o tamanho do CheckBox}
DrawFrameControl(DBGrid1.Canvas.Handle,R,DFC_BUTTON, DFCS_BUTTONCHECK or Check);
end;

end;


Para executar ação TRUE ou FALSE no CheckBox (use o procedimento CellClick do DBGrid):
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
ClientDataSet1.Edit;
if ClientDataSet1Ativo.AsString = 'X' then
ClientDataSet1Ativo.AsString := ''
else ClientDataSet1Ativo.AsString := 'X';
ClientDataSet1.Post;
end;

Programa executando:


*********************************************************************************
Faça o download do arquivo: CheckBox no DBGrid.rar
(acompanha arquivo: midas.dll -> necessária para o funcionamento)
*********************************************************************************


"Bem feito é melhor do que bem explicado." Benjamim Franklin.