Permitindo Múltiplas Seleções [TDBGrid]


Para seleção múltipla, você precisa colocar a opção dgMultiSelect como "True" na propriedade Options.
Quando dgMultiSelect é "True", você podem selecionar várias linhas no TDBGrid.
As teclas de "Ctrl + clique do mouse" "Shift + teclas de seta" Funcionam quando habilitado a opção dgMultiSelect
Os registros selecionados são armazenados na propriedade SelectedRows do TDBGrid.

O SelectedRows é apenas utilizado apenas quando as propriedades dgMultiSelect ou dgRowSelect estão configuradas como "True".

Podemos usar a propriedade SelectedRows para;

>> Limpar seleção;
>> Obter o número de linhas selecionadas
>> Excluir todos os registros selecionados
>> Verifique se um registro específico está selecionado

Exemplo de dgMultiSelect

 

Vamos precisa de:

>> cdsgbGrid: TClientDataSet;
>> dsgbGrid: TDataSource;
>> gbGrid: TDBGrid;
>> cdsgbGridCODIGO: TIntegerField;
>> cdsgbGridDESCRICAO: TStringField;
>> pnlTopo: TPanel;
>> BtnCodigo: TBitBtn;

No TDBGrid Ative a Opção (Options >> dgMultiSelect)

procedure TFDbGrid.BtnCodigoClick(Sender: TObject);
var
  wLocalInicial : TBookmark;
  i: Integer;
begin
  {Bookmarks permitem ao programador salva o registro da tabela para que possa retornar logo apos passar pelo processo}
  wLocalInicial := cdsgbGrid.GetBookmark;
  if (gbGrid.SelectedRows.Count > 0) then begin
    for i := 0 to gbGrid.SelectedRows.Count - 1 do begin
      {Nesse metodo faz você passar entre os registros da tabela de acordo com o que esta no DBGrid}
      cdsgbGrid.GotoBookMark(Pointer(gbGrid.SelectedRows.Items[I]));
      cdsgbGrid.Edit;
      if cdsgbGridDESCRICAO.Value = 'Pago' then
        cdsgbGridDESCRICAO.Value := 'Aberto'
      else
        cdsgbGridDESCRICAO.Value := 'Pago';
      cdsgbGrid.Post;
    end;
  end;
  {FreeBookMark Libera o Bookmarks da memoria: Obs: Se não liberado pode comprometer o espaço em memoria}
  cdsgbGrid.FreeBookMark(wLocalInicial);
end;

Exemplo: Download do exemplo

0 comentários:

Postar um comentário