-
3 Attachment(s)
Virtual Listview
Hoi
Ik heb een beetje ruzie met mijn virtual Tlistview (ownerdata := true) wat niet doet van wat ik er van verwachte.
- Probleem 1 --> Geen checkboxes
De ruimte wordt wel gereserveerd maar er worden geen checkboxes geplaatst.
In normale (niet virtuele) mode werkt het wel.
Attachment 8164
- Probleem 2 --> grafische glitches
Op een of andere manier blijft er overal iets achter zodra ik een regel geselecteerd heb.
maw, dit ziet er niet echt fraai uit.
Attachment 8165
Dit gebeurd ook als ik checkboxes uit zet.
Attachment 8166
Wat mis ik hier nu, Listview staat direct op het Form?
Gr
Herby
-
In de virtuele mode zal je ook de checkbox zelf moeten defineren.
Hoe ziet je OnDrawItem event eruit?
-
Die heb ik dus niet, ging ervan uit dat deze gewoon erbij zouden komen.
Die grafische dingen heb ik inmiddels opgelost door DoubleBuffered aan te zetten.
-
Die grafische dingen heb je toch ook ergens gekoppeld aan een item?
-
Excuus mijn reactie was wat onuidelijk.
De grafische glitches heb ik opgelost door DoubleBuffered aan te zetten.
Ik vul de LV nu met de OnData, ik teken niks want ik had geen idee dat dit de bedoeling was, zou ook niet weten waar ik daar moet beginnen.
Snap eerlijk gezegd ook niet waarom virtueel de checkboxes niet kunnen en op een normale manier wel.
In beide gevallen wordt de LV toch gewoon gevuld met items.
Heb inmiddels ook EasyListView geinstalleerd om te kijken of dat dan een alternatief zou zijn.
Ik heb een filter optie gemaakt waarmee de LV dan alleen de items laat zien die voldoen aan het filter, geen idee of dat dit ook gaat lukken met de ELV.
-
De missende checkboxes bij een TListView is een bekende "Feature". :)
-
Vreemd dat dit al die tijd dan nog niet standaard in de LV zit.
Ben nu bezig met EasyListview, dit werkt eigenlijk net zo goed, enige is dat mijn filter het nog niet doet
Mijn filter in de standaard LV laat alleen de items zien welke aan het filter voldoen.
Code:
procedure TFormMain.LV1ApplyFilter(const aFilter: string);
var
I: Integer;
begin
LV1.Items.BeginUpdate;
try
LV1.Clear;
FActiveItems.Clear;
for I := 0 to FItems.Count - 1 do
if (aFilter = '') or (Pos(UpperCase(aFilter), UpperCase(TServerItem(FItems[I]).Name)) <> 0) then
FActiveItems.Add(FItems[I]);
LV1.Items.Count := FActiveItems.Count;
finally
LV1.Items.EndUpdate;
end;
end;
Bij de MustangPeak EasyListview lukt me dat op een of andere manier nog niet, dan krijg ik alleemaal list indexes die of of bound gaan.
Heb dat stukje code zojuist geprobeerd maar die is voor View=vsIcon gemaakt
-
Het is niet zo heel erg vreemd hoor.
Zoals zoveel standaard VCL componenten (een TLabel, TComboBox, TCheckBox, TEdit, ...) is ook de TListView (en TTreeView) eigenlijk niet veel meer dan een schil rond standaard Windows controls.
Er is, in de basis, aan deze controls dus geen extra functionaliteit meegegeven.