مشکل با انتخاب آیتم ها چک لیست باکس
سلام یک برنامه نوشتم که لیستی از فایل ها رو در اختیار ما می گذاره و ما آن ها را انتخاب می کنیم و برنامه آن ها را کپی می کند هر کدام که کپی شد علامت چک آن برداشته می شود حالا می خواهم وقتی یک فایل کپی شد برنامه آیتم بعدی که هنوز کپی نشده رو انتخاب کنه با تشکر
نقل قول: مشکل با انتخاب آیتم ها چک لیست باکس
نقل قول:
نوشته شده توسط
hojjatcroos
می خواهم وقتی یک فایل کپی شد برنامه آیتم بعدی که هنوز کپی نشده رو انتخاب کنه
خوب این که کاری نداره، وقتی فایلت کپی شد یه دونه به ItemIndex اضافه می کنی!
if شرط کپی شدن فایل then
CheckListBox1.ItemIndex := CheckListBox1.ItemIndex + 1;
نقل قول: مشکل با انتخاب آیتم ها چک لیست باکس
دست شما درد نکنه آقا جواد ولی اگه 10 تا فایل تیک نخورده باشند دیگه این کد عمل نمی کنه چیزی که شما نوشتید برای وقتی که همه آیتم ها انتخاب باشند.
نقل قول: مشکل با انتخاب آیتم ها چک لیست باکس
for i:=0 to RzCheckList1.Count-1 do
begin
if RzCheckList1.ItemChecked[i]=True then
...
end;
نقل قول: مشکل با انتخاب آیتم ها چک لیست باکس
نقل قول:
for i:=0 to RzCheckList1.Count-1 do
begin
if RzCheckList1.ItemChecked[i]=True then
...
end;
کدی که شما نوشتید برای این هست که هر کدوم از اعضای لیست باکس چک خورده بود متقابل یه کاری انجام بشه ولی ایشون میخوان مثلا اگر ما گزینه های 1،7،9،14 را از لیست چک زدیم و مثلا دکمه ی استارت رو زدیم چک باکس پاک شه و فایلهای مربوط به اون گزینه کپی شن و بعد از کپی شدن هر کدوم تیکش بخوره .
برای این کار اول یه آرایه سراسری به تعداد عناصر لیست باکست تعریف کن ، بعد تو رویداد OnClcikCheck آرایه رو به صورت زیر مقدار دهی کن : ( آرایه ی که من برای نمونه برات گزاشتم 25 عنصری هست )
تعریف آرایه :
var Num: Array[0..25] of Boolean;
مقدار دهی به آرایه :
Num[CheckListBox1.ItemIndex]:=CheckListBox1.Checked[CheckListBox1.ItemIndex];
حالا تو کلید یا ... که میخوای کار رو شروع کنه کد زیر رو بنویس :
var
I,j:Integer;
begin
// Loop for uncheck all items
for J:=0 to CheckListBox1.Count-1 do CheckListBox1.Checked[J]:=False;
// Loop for check items that selected at first
for I:=0 to CheckListBox1.Count do begin
// Loop for uncheck all items
for j:=0 to CheckListBox1.Count-1 do CheckListBox1.Checked[j]:=False;
if Num[i]=True then begin
CheckListBox1.Checked[i]:=True;
end;
Sleep(20);
end;
end;
Sleep رو گزاشتم تا عملکرد کد معلوم شه و کار خاصی انجام نمیده .