は、そのキャプションによってチェックボックスを見上げるはひどいアイデアのように見えます。
それは確かになんとかです:
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;
しかし、それは正しいアプローチではありません。
TCheckListBox
の目的は、ループ内の一部のデータからチェックボックスのリストを生成することです。実際にはway you are using itとは何ですか。
キャプションでチェックボックスを参照しようとすると、各チェックボックス専用のコードを書きたいとします。それはTCheckListBox
の目的に反するものです。
代わりに、ユーザー選択を処理するときは、リストを生成するときと同じアプローチを使用して、ループを使用します。
code I have shown you to generate the checkbox listは、Dirs: TStringList
に同じインデックスを持つ関連パスのリストを目的別に生成します。
だからパスを処理するために、チェックボックスと一緒に、そのリストを反復処理:上記
{ 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;
実際にコードに似ている、あなたはすでに私の前の答えを持っています。
これは同じ概念ですが、私はもう1つの質問にあなたを示しました:Inno Setup - Check if multiple folders exist。
場合には、個々のチェックボックスが本当に(すなわち、それらは質的に同じ項目のリストを表していない)特別な処理を必要とし、正しい方法は、あなたがそれらを生成時にそのインデックスを覚えている:
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 }
'CheckListBox.Items.IndexOf( 'Item caption')'はインデックスを見つけるのに役立ちませんか? – Victoria
私たちに背景を教えてもらえますか?具体的に何が必要ですか? [あなたの前の質問への私の答え](https://stackoverflow.com/a/44254371/850848)は、チェックボックスの処理方法を示しています。 –
あなたは実際に似たような質問を続けています:https://stackoverflow.com/q/44274005/850848 - あなたは間違った側から問題を見ているようです - あなたが何をしたいのですか?チェックボックス?いくつかのコードを見せてください!キャプションでチェックボックスを調べるのは恐ろしい考えです。 –