Vous cherchez une case à cocher par sa légende ressemble à une idée terrible.
Il est en effet faisable:
Index := CheckListBox.Items.IndexOf('Prog 1');
if (Index >= 0) and CheckListBox.Checked[Index] then
begin
{ checked }
end
else
begin
{ does not exist or unchecked }
end;
Mais ce n'est pas la bonne approche.
Le but de TCheckListBox
est de permettre de générer une liste de cases à cocher à partir de certaines données, dans une boucle. Quel est en effet le way you are using it.
Votre tentative de recherche de la case à cocher par sa légende indique que vous souhaitez écrire un code dédié à chaque case. Cela défie le but du TCheckListBox
. Au contraire, lors du traitement d'une sélection d'utilisateur, utilisez plutôt la même approche que pour générer la liste, en utilisant une boucle.
Le code I have shown you to generate the checkbox list génère par destination une liste de chemins associés avec les mêmes index en Dirs: TStringList
.
donc cette liste itérer ainsi que les cases à cocher pour traiter les chemins:
{ Iterate the path list }
for Index := 0 to Dirs.Count - 1 do
begin
{ Is the associated checkbox checked? }
if CheckListBox.Checked[Index] then
begin
{ Process the path here }
MsgBox(Format('Processing path %s', [Dirs[Index]]), mbInformation, MB_OK);
{ In your case, you delete the folder }
DelTree(Dirs[Index], True, True, True);
end;
end;
Ce qui précède est en fait similaire au code, vous avez déjà dans ma réponse précédente.
Et c'est le même concept, je vous ai montré dans votre encore une question: Inno Setup - Check if multiple folders exist.
Dans le cas où les cases individuelles ont vraiment besoin d'un traitement spécial (ils ne représentent pas une liste d'éléments qualitativement identiques), la bonne façon est de se rappeler leur index au moment de les générer:
if ShouldAddItem1 then
Item1Index := CheckListBox.AddCheckBox(...)
else
Item1Index := -1;
if ShouldAddItem2 then
Item2Index := CheckListBox.AddCheckBox(...)
else
Item2Index := -1;
if (Item1Index >= 0) and CheckListBox.Checked[Item1Index] then
{ Process item 1 }
if (Item2Index >= 0) and CheckListBox.Checked[Item2Index] then
{ Process item 2 }
Will not 'CheckListBox.Items.IndexOf ('de sous-titre de l'article')' aide pour trouver l'index? – Victoria
Pouvez-vous nous donner quelques informations de base? De quoi avez-vous besoin spécifiquement? [Ma réponse à votre question précédente] (https://stackoverflow.com/a/44254371/850848) vous montre comment traiter les cases à cocher. –
Vous continuez à poser des questions similaires: https://stackoverflow.com/q/44274005/850848 - On dirait que vous regardez le problème d'un mauvais côté - Alors que voulez-vous faire, une fois que vous obtenez une référence à la case à cocher? Montrez-nous du code! Regarder une case à cocher par sa légende ressemble à une idée terrible. –