Problemas ListView

Delphi

12/01/2005

Quando adiciono um item no ListView em run time não aparece o caption do ítem. Quando adiciono em design time aparece o caption que dou para ele. Alguém sabe porque isso? Estou esquecendo de setar alguma propriedade?

segue abaixo o código que utilizo para adicionar o ítem, onde lv é TListView

var
  oItem: TListItem;
begin
  oItem := TListItem.Create(lv.Items);
  oItem.Caption := ´Teste´;
  oItem.ImageIndex := 0;
  lv.Items.AddItem(oItem);


Obrigado


Andremuller

Andremuller

Curtidas 0

Respostas

Andremuller

Andremuller

12/01/2005

sobe


GOSTEI 0
Andremuller

Andremuller

12/01/2005

Resolvido.

Não sei porque motivo, mas deve-se setar o caption depois de adicionar o objeto. Como no código abaixo

var
  oItem: TListItem;
begin
  oItem := TListItem.Create(lv.Items);
  oItem.ImageIndex := 0;
  lv.Items.AddItem(oItem);
  //tem que setar depois senão não funciona
  lv.Items[lv.Items.IndexOf(oItem)].Caption := ´Teste´;
end;



GOSTEI 0
Macario

Macario

12/01/2005

Pode-se usar o metodo Invalidate;


GOSTEI 0
Andremuller

Andremuller

12/01/2005

obrigado pela resposta, mas o método enviado não funcionou, segundo código abaixo:

var
  oItem: TListItem;
begin
  oItem := TListItem.Create(lv.Items);
  oItem.ImageIndex := 0;
  oItem.Caption := ´Teste´;
  lv.Items.AddItem(oItem);
  lv.Invalidate;

De qualquer forma, como já envie no e-mail anterior, encontrei uma solução, apesar que eu preferiria utilizar algum método como o Invalidade para qualificar mais o código.

Obrigado


GOSTEI 0
Massuda

Massuda

12/01/2005

Apenas por curiosidade...

Eu nunca tive o problema que você descreveu. O código que uso para incluir um item em um list view é algo do tipo...
var
  oItem: TListItem;
begin
  oItem := lv.Items.Add;
  oItem.Caption := ´Teste´;
  oItem.ImageIndex := 0;
Entretanto, seu código...
var 
  oItem: TListItem; 
begin 
  oItem := TListItem.Create(lv.Items); 
  oItem.Caption := ´Teste´; 
  oItem.ImageIndex := 0; 
  lv.Items.AddItem(oItem);
não compila... dá o erro
Undeclared identifier: ´AddItem´

Qual versão de Delphi você está usando?
A variável lv é um TListView?


GOSTEI 0
Andremuller

Andremuller

12/01/2005

Utilizo Delphi6 e lv é um TListView .
Achei que o método AddItem poderia então ter sido escrito aqui na empresa porém verifiquei que ele realmente é um método da ComCtrls (function TListItems.AddItem(Item: TListItem; Index: Integer): TListItem;) e consta no help do Delphi.
Apesar da solução postada por mim resultar no mesmo que postou o colega Massuda, achei o código dele mais coerente e organizado, vou adotá-lo.
Obrigado


GOSTEI 0
Massuda

Massuda

12/01/2005

Utilizo Delphi6 [...]
Tá explicado... no momento estou usando D5.


GOSTEI 0
Macario

Macario

12/01/2005

Ola eu utilizado a ListView em substituição do DBGrid

Pelo metodo OnData do ListView faço o seguinte

procedure TFrmBoletoLaser.lsvRetornoData(Sender: TObject; Item: TListItem);
begin
  cdsRetorno.RecNo := (Item.Index+1);
  Item.Caption := cdsRetornoTIPO.DisplayText;
  Item.SubItems.Add(cdsRetornoDoc.DisplayText);
  Item.SubItems.Add(cdsRetornoTITULO.DisplayText);
  Item.SubItems.Add(cdsRetornoDESCRICAO.DisplayText);
  Item.SubItems.Add(cdsRetornoDATVEN.DisplayText);  
  Item.SubItems.Add(cdsRetornoVLRTITULO.DisplayText);
  Item.SubItems.Add(cdsRetornoVLRPGTO.DisplayText);
  Item.SubItems.Add(cdsRetornoDATENT.DisplayText);
  Item.SubItems.Add(cdsRetornoDATLIQ.DisplayText);
  Item.SubItems.Add(cdsRetornoVLRJUROS.DisplayText);
  Item.SubItems.Add(cdsRetornoVLRIOF.DisplayText);
  Item.SubItems.Add(cdsRetornoVLRABAT.DisplayText);
  Item.SubItems.Add(cdsRetornoVLRDESC.DisplayText);
  Item.SubItems.Add(cdsRetornoVLRMORA.DisplayText);
  Item.SubItems.Add(cdsRetornoNBANCO.DisplayText);
  case StrToInt(cdsRetornoTIPO.AsString) of
  2:  Item.ImageIndex := 0;
  3:  Item.ImageIndex := 1;
  6:  Item.ImageIndex := 2;
  10: Item.ImageIndex := 3;
  11: Item.ImageIndex := 4;
  12: Item.ImageIndex := 5;
  15: Item.ImageIndex := 6;
  17: Item.ImageIndex := 7;
  23: Item.ImageIndex := 8;
  26: Item.ImageIndex := 9;
  34: Item.ImageIndex := 10;
  51: Item.ImageIndex := 11;
  52: Item.ImageIndex := 12;
  53: Item.ImageIndex := 13;
  end;


end;


Obs: Setar a propriedade Owner para [b:92c7adf6fa]True[/b:92c7adf6fa]

Uso isso no Delphi 6 usando ClientDataSet pra alimentar os dados


GOSTEI 0
POSTAR