Analitcs

Pesquisar no conteúdo do blog.atlabs.com.br

terça-feira, 22 de julho de 2014

DELPHI - DbGridToListView (Db Grid To List View)

Reações: 


procedure DbGridToListView(ADataSet: TDataSet; ListView: TListView; GridList : TDBGridColumns);
var
  Li   : TListItem;
  Ci   : TListColumn;
  I    : Integer;
  sListFields : TStringList;
Const
  ESPACOS = '      ';
begin
  if ADataSet = Nil then Exit;
  if ListView = Nil then Exit;
  if ADataSet.IsEmpty then
  begin
    ShowMessage('Registros não localizados.');
    Exit;
  end;
  try
    ADataSet.First;
    sListFields := TStringList.Create;
    try
      ListView.Columns.Clear;
      for I := 0 to GridList.Count - 1 do
      begin
        if  (GridList.Items[I].FieldName <> '')
        and (GridList.Items[I].Visible) then
        begin
          Ci                   := ListView.Columns.Add;
          if Ci.Index = 0 then
            Ci.Caption         := ESPACOS + GridList.Items[I].Title.Caption
          else
            Ci.Caption         := GridList.Items[I].Title.Caption;
          Ci.Width             := GridList.Items[I].Width + 4;
          Ci.Alignment         := GridList.Items[I].Title.Alignment;
          sListFields.Add(GridList.Items[I].FieldName);
        end;
      end;
      while not ADataSet.Eof do
      begin
        Li := ListView.Items.Add;
        Li.Caption := Trim(ADataSet.FieldByName(sListFields[0]).AsString);
        Li.Checked := True;
        for I := 1 to sListFields.Count - 1 do
          Li.SubItems.Add(Trim(ADataSet.FieldByName(sListFields[I]).AsString));
        ADataSet.Next;
      end;
    finally
      ADataSet.First;
      Sysutils.FreeAndNil(sListFields);
      Sysutils.FreeAndNil(sListKeys);
    end;
  except
    On Err : Exception do
    begin
      ShowMessage('Erro ao carregar lista de informações. ' + Err.Message);
    end;
  end;
end;

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.

Max Gehringer