Fórum Editar as celulas de um ListView #299256
13/10/2005
0
Mkoch
Curtir tópico
+ 0Posts
13/10/2005
Marcio.theis
http://www.linhadecodigo.com.br/artigos.asp?id_ac=581
Gostei + 0
13/10/2005
Mkoch
Gostei + 0
13/10/2005
Michael
A dica do colega Márcio não ajudou? Repare bem nela. Para incluir os dados nas demais colunas da ListView, excetuando-se, claro, a primeira, usou-se [b:686ecd8c0b]SubItems.Add[/b:686ecd8c0b]. Vc vc olhar no help do Delphi vai descobrir que SubItems é um objeto do tipo [b:686ecd8c0b]TStrings[/b:686ecd8c0b]. Então, para trocar o conteúdo da segunda coluna, digamos do primeiro item da lista, basta:
ListView1.Items[0].SubItems[0]:= ´String´;
[]´s
Gostei + 0
08/12/2005
Bruno Belchior
Gostei + 0
08/12/2005
Bruno Belchior
Gostei + 0
09/12/2005
Fx|hand
e por ai vc consegue saber a coluna e o item q o usuario clicou... naum é taum dificil criar uma tedit no meio da listview pro kra poder alterar... =P
deve ter alguma coisa do tipo no torry... =D
boua sorte !
Gostei + 0
09/12/2005
Bruno Belchior
Gostei + 0
09/12/2005
Michael
Existe um componente chamado VirtualTreeView. Embora ele seja essencialmente um TreeView, nada impede que vc o use como um ListView. É o componente do gênero mais sofisticado que eu já trabalhei, free e open-source. Nele vc pode implementar como a edição de cada coluna será feita. O próprio demo que vem com ele traz algo assim.
Para se ter uma idéia da qualidade deste controle, a Borland o incluiu no IDE do Delphi 2005, e deve ter feito o mesmo para a versão 2006. Sempre que vc encontrar uma lista no IDE é ele.
Estou escrevendo um artigo mostrando tudo o que eu sei sobre este componente. Deve sair na ClubeDelphi no início do ano que vem.
O link para download é: http://www.delphi-gems.com/VirtualTreeview/ .
[]´s
Gostei + 0
10/12/2005
Bruno Belchior
Gostei + 0
10/12/2005
Khundalini
Sds,
Rubem Rocha
Manaus, AM
Gostei + 0
13/03/2007
Djpedro
ListView1.Items[0].SubItems[0]:= ´String´;
Cara, foi mal.. Mandei um email para vc, não tinha visto que não podia enviar direto à vc.
Cara,
Eu estou fazendo um programa em delphi, mas estou encontrando um problema. Meu programa é um controle de laboratórios de informática, então estou fazendo alguns que j´pa conheço, mas precisarei entregar para o cliente... Só que ele pode precisar adicionar máquinas ou laboratórios novos, e ntão preciso gerar ou um script ou uma função para isso seja feito por ele mesmo dinamicamente, sem que ele altere código ou coisa parecida. Dei uma estudada e vi que dá pra fazer em ListView. 8)
Gostei + 0
13/05/2007
Pikkasso
e por ai vc consegue saber a coluna e o item q o usuario clicou... naum é taum dificil criar uma tedit no meio da listview pro kra poder alterar... =P
deve ter alguma coisa do tipo no torry... =D
boua sorte ![/quote:1178959060]
Fiz isso com o seguinte codigo:
procedure TForm1.ListView1Click(Sender: TObject);
var
pbRect : TRect;
begin
if MyIte <> -1 then begin
/////////////////Só funciona Maximizado??????????????????????????
Edit2.Parent := ListView1;
pbRect := ListView1.Items[MyIte].DisplayRect(drBounds);
case MySub of
2: begin
pbRect.Left := pbRect.Left + ListView1.Columns[0].Width +
pbRect.Left + ListView1.Columns[1].Width;
pbRect.Right := pbRect.Left + ListView1.Columns[MySub].Width;
end;
3: begin
pbRect.Left := pbRect.Left + ListView1.Columns[0].Width +
pbRect.Left + ListView1.Columns[1].Width +
pbRect.Left + ListView1.Columns[2].Width;
pbRect.Right := pbRect.Left + ListView1.Columns[MySub].Width;
end;
4: begin
pbRect.Left := pbRect.Left + ListView1.Columns[0].Width +
pbRect.Left + ListView1.Columns[1].Width +
pbRect.Left + ListView1.Columns[2].Width +
pbRect.Left + ListView1.Columns[3].Width;
pbRect.Right := pbRect.Left + ListView1.Columns[MySub].Width;
end;
5: begin
pbRect.Left := pbRect.Left + ListView1.Columns[0].Width +
pbRect.Left + ListView1.Columns[1].Width +
pbRect.Left + ListView1.Columns[2].Width +
pbRect.Left + ListView1.Columns[3].Width +
pbRect.Left + ListView1.Columns[4].Width;
pbRect.Right := pbRect.Left + ListView1.Columns[MySub].Width;
end;
end;
if (MySub <> 0) and (MySub <> 1) then begin
Edit2.BoundsRect := pbRect;
try
Edit2.Text := ListView1.Items[MyIte].SubItems[MySub -1];
except
Edit2.Text := ´´;
end;
ItemEdit := MyIte;
SubEdit := MySub;
Edit2.Visible := True;
Edit2.SetFocus;
end;
end;
end;
ItemEdit, MyIte, SubEdit e MySub são variáveis globais que são definidas no evento onMouseMove do ListView.
Esse código tem um problema: Fonciona muito bem quando o form está maximizado, porem quando não o TEdit até fica no tamanho (width e heigh) e na altura (top) do SubItem clicado, porem fica desalinhado horizontalmente (left). O que poderá estar acontecendo?
Gostei + 0
13/05/2007
Pikkasso
Como faço pro edit sumir quando uso a roda do mouse como scrol (wheel)?
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)