Recent

Author Topic: GTK2 widget Listview can not show items when set OwnerData to False from True  (Read 178 times)

cai

  • New Member
  • *
  • Posts: 46
Code: Pascal  [Select][+][-]
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. begin
  3.   ListView1.OwnerData:= True;
  4.   ListView1.Items.Count:= 100;
  5. end;
  6.  
  7. procedure TForm1.Button2Click(Sender: TObject);
  8. var
  9.   I: Integer;
  10. begin
  11.   if ListView1.OwnerData then
  12.     ListView1.Items.Count:=0
  13.   else
  14.     ListView1.Items.Clear;
  15.  
  16.   ListView1.OwnerData:=False;
  17.   for I:=0 to 10-1 do
  18.   begin
  19.     with ListView1.Items.Add do
  20.     begin
  21.       Caption := IntToStr(I);
  22.       SubItems.Add('test1');
  23.     end;
  24.   end;
  25. end;
  26.  
  27. procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
  28. begin
  29.   Item.Caption:= IntToStr(Item.Index);
  30.   Item.SubItems.Add('test2');
  31. end;
  32.  
  33.  

click Button1 ---> click Button2,  no item show in listview

ListView1.OwnerData:=False; “ seems like not work in GTK2 widget,
should I recreate listview?

cai

  • New Member
  • *
  • Posts: 46
fixed code!

Code: Pascal  [Select][+][-]
  1. type
  2.  
  3.   TListItemsPatch = class(TListItems)
  4.  
  5.   end;  
  6.  
  7. procedure TForm1.Button2Click(Sender: TObject);
  8. begin
  9.   ...
  10.   ....
  11.   ListView1.OwnerData:=False;
  12.   [b]TListItemsPatch(ListView1.Items).WSCreateItems; [/b]
  13.   ...
  14.   ...
  15. end;
  16.  
  17.  

call WSCreateItems and it work now. not test carefully, just for demo

zeljko

  • Hero Member
  • *****
  • Posts: 1982
    • http://wiki.lazarus.freepascal.org/User:Zeljan
Even on gtk3,qt5,qt6 changing ownerDraw does nothing in WS code.

 

TinyPortal © 2005-2018