PDA

View Full Version : فیلتر کردن با CheckListBox



Valadi
یک شنبه 28 مرداد 1386, 07:59 صبح
با سلام
مشکل اینکه می خوام با CheckListBox که در دلفی هست :
اول اطلاعات ID (دیتا بیس کوئری ) را درون CheckListBox ببرم ؟ ( اتوماتیک آپدیت بشه - احتمال داره که به بانک اضافه شده باشد )
دوم : چگونه انتخاب شده را فیلتر کنیم ؟ (که فقط انتخاب شده را برای پرینتر بفرسه )

Valadi
یک شنبه 28 مرداد 1386, 09:47 صبح
کسی نمی تونه جواب بده

Batman
یک شنبه 28 مرداد 1386, 09:56 صبح
با سلام
امیدوارم که منظورتون رو گرفته باشم
جناب valadi سوال اولتون رو که فکر کنم باید از روش پیمایش کوئری یک یه یک رکوردها رو توی cheklistbox اضافه کنید
و اما سوال دوم هم توی خاصیت onclick (اگه اشتباه نکنم) میتونی شرط بذاری که اگر یه آیتم cheked=true بر اساس اون فیلتر رو انجام بده
موفق باشید

Valadi
یک شنبه 28 مرداد 1386, 10:02 صبح
ok
حالا باید چه کار کنیم ؟؟؟؟؟؟
فوری بخاطر اینکه خیلی احتیاج دارم

Batman
یک شنبه 28 مرداد 1386, 10:07 صبح
با سلام
دوست عزیز "فوری" که مخالف قوانین سایت هستش شما دیگه چرا

while (not quey.eof) do
begin
cheklistbox1.items.add('query.fieldbyname('fieldna me').value');
query.next;
end;

و برای دومی

if cheklistbox1.checked=true then
//filter with your filedname

موفق باشید

Valadi
یک شنبه 28 مرداد 1386, 10:58 صبح
با سلام
دوست عزیز "فوری" که مخالف قوانین سایت هستش شما دیگه چرا

while (not quey.eof) do
begin
cheklistbox1.items.add('query.fieldbyname('fieldna me').value');
query.next;
end;

و برای دومی

if cheklistbox1.checked=true then
//filter with your filedname

موفق باشید

مرسی اما هر دو کدها مشکل داشتند
کد اول را اصلاح کردم و دوباره قرار دادم که تا دیگران هم استفاده کنند

while not QueryUser.Eof do
begin
CheckListBox1.Items.Add(QueryUser.FieldByName('id' ).AsString);
QueryUser.Next;
end;


اما هنوز سوال دوم به نتیجه ایی نرسیدم
دوم : چگونه انتخاب شده را فیلتر کنیم ؟ (که فقط انتخاب شده را برای پرینتر بفرسه )

Valadi
یک شنبه 28 مرداد 1386, 11:29 صبح
چگونهCheckListBox آیتم های انتخاب شده را فیلتر کنیم ؟
من این کار را کردم جواب نمی دهه

;QueryUser.Filtered:=CheckListBox1.Checked

Batman
یک شنبه 28 مرداد 1386, 12:41 عصر
با سلام
ببینید کد اول رو گفتم شاید از ado استفاده کردید و به اون شکل نوشتم چون نمیدونستم فیلد شما از چه نوعی هستش
اما مورد دوم
ببین دوست عزیز خودت که دیگه بهتر میدونی توی خاصیتها نگاه کن چون من الان نصب ندارمش حتما یه خاصیت onclick یا یه چیزی شبیه به این داره دیگه
خوب بقیه اش رو هم که در پست قبلی نوشتم در ضمن اگر بگی کامپوننتش چیه نصبش میکنم و بهتر جواب میگیری موفق باشید

Valadi
یک شنبه 28 مرداد 1386, 12:48 عصر
کد دوم پیغام خطا می ده مشکل داره
if cheklistbox1.checked=true then
//filter with your filedname

SYNDROME
یک شنبه 28 مرداد 1386, 13:45 عصر
با سلام
ببینید این کارتون رو راه می اندازد.


Flag := False;
s := '';
For i:=0 To CheckListBox1.Count Do
Begin
IF CheckListBox1.Checked[i] Then
Begin
IF Flag Then S := S + ' And ';
S := S + ' FieldName ='+CheckListBox1.Items.Strings[i];
Flag := True;
End;
End;

موفق باشید

Valadi
یک شنبه 28 مرداد 1386, 15:04 عصر
SYNDROME
مشکل اول حل شد اما حالا مشکل دوم

الان مشکل من اینکه وقتی روی هر کدام از آیتم ها کلیک شده و فقط تیک خورده ها بانک را فیلتر کنه

SYNDROME
یک شنبه 28 مرداد 1386, 18:56 عصر
با سلام


الان مشکل من اینکه وقتی روی هر کدام از آیتم ها کلیک شده و فقط تیک خورده ها بانک را فیلتر کنه
من در دو تا تاپیک قبل کدی بر اساس گزینه های تیک خورده بانک شما را فیلتر می کند.می توانی کد مورد نظر را در یک Buttonبنویسی.
آیا آن را تست کردید؟
موفق باشید

Valadi
دوشنبه 29 مرداد 1386, 08:05 صبح
علی جان این پیام خطا را می ده

List index out of bounds (108)

Batman
دوشنبه 29 مرداد 1386, 09:52 صبح
جناب valadi حلقه for رو به این شکل بنویس

for i:=1 to cheklistbox1.count-1 do
begin
...
end;

MNosouhi
دوشنبه 29 مرداد 1386, 15:58 عصر
با اجازه آقای SYNDROME ، کد رو تصحیح میکنم :


begin
Flag := False;
s := '';
if CheckListBox1.Items.Count>0 then
For i:=1 To CheckListBox1.Count Do
Begin
IF CheckListBox1.Checked[i-1] Then
Begin
IF Flag Then S := S + ' or ';
S := S + ' FieldName ='+CheckListBox1.Items.Strings[i-1];
Flag := True;
End;
End;
//...
end;

در ضمن آقای ولدی من از شما ایمیلی دریافت نکردم.