PDA

View Full Version : مشکل با انتخاب آیتم ها چک لیست باکس



hojjatcroos
پنج شنبه 01 اسفند 1387, 13:10 عصر
سلام یک برنامه نوشتم که لیستی از فایل ها رو در اختیار ما می گذاره و ما آن ها را انتخاب می کنیم و برنامه آن ها را کپی می کند هر کدام که کپی شد علامت چک آن برداشته می شود حالا می خواهم وقتی یک فایل کپی شد برنامه آیتم بعدی که هنوز کپی نشده رو انتخاب کنه با تشکر

جواد ملاولی
پنج شنبه 01 اسفند 1387, 15:22 عصر
می خواهم وقتی یک فایل کپی شد برنامه آیتم بعدی که هنوز کپی نشده رو انتخاب کنه

خوب این که کاری نداره، وقتی فایلت کپی شد یه دونه به ItemIndex اضافه می کنی!


if شرط کپی شدن فایل then
CheckListBox1.ItemIndex := CheckListBox1.ItemIndex + 1;

hojjatcroos
جمعه 02 اسفند 1387, 11:01 صبح
دست شما درد نکنه آقا جواد ولی اگه 10 تا فایل تیک نخورده باشند دیگه این کد عمل نمی کنه چیزی که شما نوشتید برای وقتی که همه آیتم ها انتخاب باشند.

Batman
جمعه 02 اسفند 1387, 11:21 صبح
for i:=0 to RzCheckList1.Count-1 do
begin
if RzCheckList1.ItemChecked[i]=True then
...
end;

Felony
جمعه 02 اسفند 1387, 23:08 عصر
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 رو گزاشتم تا عملکرد کد معلوم شه و کار خاصی انجام نمیده .