Desenvolvimento - Delphi

Delphi: Usando ListView como DBGrid

Neste artigo irei mostrar uma técnica muito simples de como usar um Listview para exibir dados de uma tabela.

por Walbert Castro



Olá pessoal,

Inicialmente gostaria de agradecer ao convite para participa da família Linha de Código. É sempre bom estar ao lado de pessaos do nosso meio apredendo e trocando conhecimentos.

Como colunista pretendo participar fornecendo artigos, aplicativos e dicas que possam ser úteis no nosso dia a dia. Para começar irei mostrar uma técnica muito simples de como usar um Listview para exibir dados de uma tabela.

Mãos a obra.

Neste artigo vou utilizar Banco de Dados MySQL, mas nada impede que se possa usar outros tipos (Interbase/FireBird ou até mesmo o velho Paradox e Dbase).

Estrutura das Tabela

Tabela users

Inclua alguns registros para teste.


Definindo um Data Module

No Delphi crie uma nova aplicação e em File->New->Other escolha Data Module, salve o nosso Data Module como Modulo e na propriedade Name digite Dm.
Agora vamos à paleta de componentes na pagina dbExpress e inclua um SQLConnection e um SQLQuery. Faça as seguintes alterações nos componentes.

SQLConnection1

Configure uma conexão MySQL.

Mude as Propriedades:

LoadParamOnConnect = True
LoginPrompt = False
Connected = True

SQLQuery1

Name = SqUsers
SQLConnection = SQLConnection1
SQL = select * from users order by login
Active = True

Adicione todos os Campos ao SQLQuery

Seu Data Module deve esta como mostrado abaixo.

Configurando o Formulário

No form1 vamos incluir um ListView e ImageList (ambos da pagina Win32) . E mude as propriedades como mostrado abaixo.

ListView1

GridLines = True
SmallImages = ImageList1
RowSelect = True
ViewStyle = vsReport

Clique duas no Listview e inclua três colunas. Conforme mostrado abaixo.

Vamos muda as propriedades:

0 – TListColumn

Caption = Login
Width = 150

1 – TListColumn

Caption = Nome do Usuário
Width = 250

2 – TListColumn

Caption = Nível
Width = 55
Alignment = taCenter

Agora nossas colunas estarão assim.

Agora clique duas vezes no ImageList1 e escolha os ícones que serão exibidos.

Vamos usar a imagem 0 para usuários com Nível igual A e a imagem 1 para usuários com Nível O.

Criando o procedimento

Agora vamos criar o procedimento responsável por mostrar os dados da tabela no ListView.

No editor de código na sessão public vamos declara o procedimento CriarLista e na sessão implementation adicione nosso Data Module (Modulo). Conforme mostrado abaixo.

Agora vamos ao código

procedure TForm1.CriarLista;
var
ListItem: TListItem; // Criamos uma variável para guarda os itens do Listview
begin

// Limpa o Conteudo Existente no ListView
ListView1.Clear;

// Posicionamos no Primeiro Registro
Dm.SqUsers.First;

while not Dm.SqUsers.Eof do
begin

// Adicionamos um Item ao ListView
ListItem := ListView1.Items.Add;

// Verifica qual o Icone deve ser apresentado
if Dm.SqUsersnivel.Value = "A" then
ListItem.ImageIndex := 0
else
ListItem.ImageIndex := 1;

// Adicionamos dados a Coluna Login
ListItem.Caption := Dm.SqUserslogin.Value;

// Adicionamos a Coluna Nome do Usuario
ListItem.SubItems.Add(Dm.SqUsersnome_usuario.Value);

// Adicionamos a coluna Nivel
ListItem.SubItems.Add(Dm.SqUsersnivel.Value);

// Mudamos para o proximo registro
Dm.SqUsers.Next;

end;

//Seleciona a primeira linha do ListView se existir dados na tabela
if Dm.SqUsers.RecordCount > 0 then
Listview1.ItemIndex := 0;
end;

Agora no Evento OnShow do formulário vamos acrescenta no procedimento

procedure TForm1.FormShow(Sender: TObject);
begin
CriarLista;
end;

Agora basta executa a aplicação para ver o resultado.


Conclusão

Aqui termino meu primeiro artigo, tentei mostrar de forma simples como exibir dados de uma tabela num ListView. Dica que pode ser útil em pequenas aplicações.

Abraços a todos e até proxima.

Walbert Castro

Walbert Castro - Trabalha como Coordenador de informática na revenda Ambev do Amapá, utiliza o Delphi desde a versão 1, onde já desenvolveu vários sistema usando os bancos de dados Interbase, Firebird, MySQL e Paradox. Possui conhecimentos em Delphi, Clipper, VBA, PHP e administração de Servidores Linux e Windows 2000.