Bonjour,

J'ai un TcheckListbox que je remet à jour à la volé.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
 
// 1° je vide mon checkListbox
  edtDetailLock.Items.clear;
 
// JE recupere les donné que je veux mettre dedans. Le resultat est un set de TSvtDetailLock.
  FEnabledLocked := [];
  for AShapeIndex := Low(TSvtGridShapeType) to High(TSvtGridShapeType) do begin
    if AShapeIndex in FMode then begin
      FLocked.LockedEnabled(AShapeIndex, FEnabledLocked, False);
    end;
  end;
 
// 3° pour toutes mes valeurs désirez, je teste si je doit ajouter la valeur et je l'ajoute si necessaire
  for AIndex := Low(TSvtDetailLock) to High(TSvtDetailLock) do begin
    if AIndex in FEnabledLocked then begin
       AName := FLocked.LockedName[AIndex];
       AI := edtDetailLock.Items.Count;
       edtDetailLock.Items.Add(AName);
// en théorie, ce teste est inutil, mais il m'indique le problème
       if AI <> edtDetailLock.Items.Count then
         edtDetailLock.Checked[AI] := FLocked.LockedValue[AIndex]
    end;
  end;
Si l'utilisateur à un comportement absurde, et qu'il ne cesse de changer les valeurs (selectionner un curseur de track bar et aller d'un bout a l'autre de l'écran allez retour sans jamais s'arréter. Fair mumuse quoi mais il faut bien aussi prévoir ce cas).
Le TCheckboxList finit par se laisser dépasser par les événement et par ne pas ajouter les éléments quand je fais "edtDetailLock.Items.Add(AName);".
Je pense qu'il doit se perdre dans un nombre de message trop important ou arrivant en desordre, mais je n'es suis pas sur.
quelqun connait il ce problème ?

Merçi