GARANTIR DESCONTO

Fórum DbGrid com CheckBox - Limpar marcados #354006

18/02/2008

0

Pessoal,
Boa tarde!

Tenho um DBGrid onde faço uma selecao das linhas atravez de checkbox no proprio DBGrid.
O que eu preciso é de um metodo para marcar ou limpar todos os checkbox existentes no DBGrid.

Alguem sabe como fazer isso?

No DBGrid coloquei os CheckBox da seguinte maneira:

No evento DrawDataCell eu coloquei o seguinte codigo:

  if (Field.FieldName = ´ID_CLIENTE´) and (not (gdFixed in State)) then begin
    // Desenha um campo em branco
    dbgRegistros.Canvas.FillRect(Rect);

    // Testa de a linha está selecionada ou não
    if dbgRegistros.SelectedRows.IndexOf(dbgRegistros.DataSource.DataSet.Bookmark) >= 0 then
      DrawFrameControl(dbgRegistros.Canvas.Handle, Rect, DFC_BUTTON, DFCS_BUTTONCHECK or DFCS_CHECKED)
    else
      DrawFrameControl(dbgRegistros.Canvas.Handle, Rect, DFC_BUTTON, DFCS_BUTTONCHECK);
  end;



E no evento CellClick o seguinte codigo:

dbgRegistros.SelectedRows.CurrentRowSelected := not dbgRegistros.SelectedRows.CurrentRowSelected;



Se alguem puder dar uma ajuda.

Obrigado!


Mmoreira

Mmoreira

Responder

Posts

26/03/2008

Abpaula

Usando o seu código como modelo criei a seguinte função, ela pose ser chamada através de um popup_menu na grade com três funcionalidades diferentes.
1 - Marcar todas
2 - Desmarcar todas
3 - Inverter seleção

Obrigado!!!

Procedure TFPrincipal.Selecao_Grade(Tipo : Integer);
Begin
Dataset.DisableControls;
Dataset.First;
While not Dataset.Eof do
Begin
If Tipo = 1 then// Marcar todos
Grade.SelectedRows.CurrentRowSelected := True
Else
If Tipo = 2 then  // Desmarcar todas
Grade.SelectedRows.CurrentRowSelected := False
Else
If Tipo = 3 then  // Alternar seleção
Grade.SelectedRows.CurrentRowSelected := not Grade.SelectedRows.CurrentRowSelected;
Dataset.Next;
End;
Dataset.First;
Dataset.EnableControls;
End;



Responder

Gostei + 0

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

Aceitar