Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido)Colunas em um ListBox


João Paulo Taraciuk

Pergunta

Olá a todos, gostaria de saber como controlo as colunas em um listbox, para ele receber os dados de uma ZQuery ou um DBGrid, para exibir uma coluna utilizo este código

ListBox1.Items.Add(ZQuery1.Fields[0].AsString);

Gostaria de saber como proceder se a a query estivesse com 3 colunas, mais ou menos dessa maneira

Descrição | Data | Valor

XXXXXXX | XXXX | XXXX

poderia ser no listbox ou em um ListView, se alguém puder me ajudar eu agradeço.

Abraços!!!

Editado por João Paulo Taraciuk
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

João, o componente ListBox não seria o mais indicado para este caso, já que você não vai conseguir colocar os dados no formato colunado (vai ficar uma porcaria mesmo). Voce pode ver este post sobre como utilizá-lo.

Teria, ainda, a opção de utilizar um StringGrid (na seqüência do post acima eu exemplifico como).

Quanto a utilizar o ListView, você vai precisar definir a propriedade ViewStyle = vsReport, adicionar as colunas (headers) e definir suas larguras através da propriedade Columns.

A partir daí, basta popular o ListView. O primeiro post deste tópico tem um exemplo do que você deverá fazer para adicionar cada item/subitem.

Mas fica a pergunta: Por que você não utiliza um DBGrid, que automatiza todo o processo?

Veja se consegue ir a diante.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Muito Obrigado Micheus, deu exatamente como eu queria utilizando o ListBox no exemplo do Churc ficaria dessa maneira

Listbox1.TabWidth := 50;
ListBox1.Items.Add(MinhaQuery.FieldByName('CAMPO1').AsString+^I+'  '+MinhaQuery.FieldByName('CAMPO2').AsString);
Funcionou Perfeitamente Fazendo como no post do samuelsjn, com o ListView ficou assim
var
  lstitmItem: TListItem;
begin
  ListView1.ShowColumnHeaders := true;
  ListView1.Clear;
  while not MinhaQuery.Eof do
  begin
    lstitmItem := ListView1.Items.Add;
    lstitmItem.SubItems.Add(MinhaQuery.FieldByName('CAMPO1).AsString);
    lstitmItem.SubItems.Add(MinhaQuery.FieldByName('CAMPO2').AsString);
    MinhaQuery.Next;
  end;  //       Também funcionou direitinho

Aí testando aqui, tentei fazê-lo mostrar no Hint de um DBGrid, que é onde será selecionado os dados, ficou dessa maneira

DBGrid1.Hint:=(MinhaQuery.Fields[0].AsString+' '+ MinhaQuery.Fields[1].AsString);

Quando o valor retornado é apenas um dado, mostra bonitinho, agora, se for mais de uma linha, ela mostra apenas a primeira linha.

Ah, eu não quis utilizar um DBGrid, porque é uma tela de vendas onde já tem alguns DBGrids, aí eu queria fazer diferente esta pesquisa, para facilitar a observação do usuário, que em um dblclick em um dos DBGrids, aparecerão estas informações.

Vou utilizar o Listview para este procedimento, mas como eu estou aprendendo, não ficarei triste se aprendesse também a mostrar os dados no Hint, se na tabela retornar mais de um dado, hehe

Abraços, Obrigado pela atenção !!!

Editado por Micheus
Adicionada a tag [CODE]...[/CODE] para melhor visutalização do código. Lembre-se de utilizá-la. ;-)
Link para o comentário
Compartilhar em outros sites

  • 0
Aí testando aqui, tentei fazê-lo mostrar no Hint de um DBGrid, que é onde será selecionado os dados, ficou dessa maneira

DBGrid1.Hint:=(MinhaQuery.Fields[0].AsString+' '+ MinhaQuery.Fields[1].AsString);

Quando o valor retornado é apenas um dado, mostra bonitinho, agora, se for mais de uma linha, ela mostra apenas a primeira linha.

João, no caso de um simples StringGrid (TStringGrid), isto seria mais fácil. Para um DBGrid, eu no momento não teria como verificar uma forma de fazê-lo (se é que seria possível). O que ocorre na forma como você implementou, é que o hint será formado pela linha inicialmente selecionada quando você mostra a tela, e que normalmente é a primeira (esta linha, representa o registro atualmente posicionado no dataset - apesar de o grid mostrar várias linhas dele).

Seria possível sim, alterar o conteúdo do hint de modo a refletir qualquer das linhas selecionadas num determinado momento. Mas, o hint diria respeito apenas a linha selecionada. Seria este o caso?

Porque se for parta mostar as informações de uma linha que não esteja selecionada, esta cituação, como mencionei antes, eu não saberia lhe informar da possibilidade (por hora).

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...