-
Un TListbox virtuel ?
Bonjour à toutes & à tous,
Je me rappelle avoir utilisé, il y a des années de cela, un TListBox sous Delphi qui permettait de ne pas remplir la liste ; il suffisait de renseigner la propriété Count et un appel était fait pour chaque élément visible au travers de l'événement OnDrawItem.
Sous Lazarus, La propriété Style accepte bien la valeur lbVirtual mais cela n'a aucun effet, d'autant plus que la propriété Count est en lecture seule.
J'ai fouillé en vain sur le net un composant qui saurait faire ça sous Lazarus... nop.
Du coup, j'ai tenté de dériver depuis un TCustomListBox pour implémenter ce comportement mais je ne sais même pas par où commencer...
Une idée ?
-
Bonjour.
Si je comprend bien, tu désires avoir une liste d'items vides.
Aucune complication avec un TListBox (ajout d'items = '').
Mais pourquoi ne pas utiliser un TDrawGrid ou un TStringGrid: là tu as une propriété RowCount.
Thierry
-
Bonjour Thierry,
L'idée du AddItem( '', nil ) m'avais traversé l'esprit mais je trouve ça beurq-beurq...par contre, je vais creuser du côté du TStringGrid.
Merci !
-
Ok, ça fonctionne !
Le truc, c'est qu'il n'y a pas d'événement de dessin accessible depuis l'EDI. Pour ce faire, il faut créer une procédure de type TOnDrawCell et l'affecter à la propriété OnDrawCell.
Pour le résultat final, c'est à dire simuler correctement une ListBox, il va falloir se creuser un peu mes méninges, le composant n'étant pas destiné à cela à l'origine mais ça devrait le faire.
Merci Thierry pour l'astuce, je ne manquerai pas de revenir avec tous les détails pour un fonctionnement identique à un TListBox.