Effectivement, j'ai fait un essai avec FindStyleRessource plutôt que StylesData et cela fonctionne, au temps pour moi donc.
du coup je me pose la question du code
if ilst.FindStyleResource<TCheckBox>('chkActiveBox', chkactive) then
chkActiveBox est-il bien un TCheckBox ?
voilà ce que j'ai testé

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| procedure TForm4.Button1Click(Sender: TObject);
var
I: Integer;
anItem : TlistBoxItem;
aLabel : Tlabel;
achkBox : TcheckBox;
begin
for I := 1 to 10 do
begin
anItem:=TlistBoxItem.Create(ListBox1);
anItem.parent:=Listbox1;
anItem.height:=40;
anItem.stylelookup:='monstyle';
anItem.ApplyStyleLookup;
anItem.text:='un texte '+i.ToString;
anItem.Tag:=i;
anItem.FindStyleResource<Tlabel>('detail',aLabel);
if assigned(alabel) then alabel.Text:='detail '+i.ToString; // plutôt qu'un if anItem.findStyleResource.. then
if anItem.FindStyleResource<TcheckBox>('CheckBox1',achkbox) then // second check box
begin
achkbox.Tag:=anItem.tag;
achkbox.IsChecked:=odd(anItem.tag);
achkbox.OnChange:=itemCheckBoxChange;
end;
end;
end;
procedure TForm4.itemCheckBoxChange(Sender: TObject);
begin
memo1.Lines.Add('Checkbox '+TCheckBox(Sender).Tag.ToString);
end; |
Toutefois si cela fonctionne sur les éléments 2-10 le premier élément déconne de temps en temps :
que ce soit le checkbox "classique" ou le checkbox "ajouté" un scroll en bas puis un retour au début de liste et les checkboxs du premier élément sont décochés et l'évènement ne se déclenche pas !
[edit] une vidéo du problème (Delphi 11.2)
https://serge-girard.developpez.com/..._listboxt.webm
Partager