Fa جست و جو در آیتم های لیست باکس

pro_man

Active Member
سلام فکر می کنم عنوانی که نوشتم گویای همه چیز هست..:cool:
می خوام توی لیست باکسم جست و جو کنم یه چیزی مثل اوتوران لرد
:green:
کسی مثال داره؟
 

peyman136

کاربر متخصص مولتی مدیا بیلدر
:sad: توی همه انجمن های گفتوگو یه باکس ناشناخته وجود داره که کمتر کسی ازش استفاده میکنه اسمشم "جستوجو" هستش فقط نگید گشتم پیدا نکردم چون این یه مورد رو خود من قبلن براش مثال گذاشتم که باعث به ایجاد شدن چند تا تاپیک هم شد
بگردید حتمن پیدا میکنید
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
مثالی که پیمان عزیز اشاره کردن رو از این مبحث میتونید دریافت کنید: مثال : جستوجو بین آیتم های لیست باکس

یک مثال هم برای جستجو در آیتم های موجود در لیست براتون ساختم که پیوست شده.

تفاوت این مثالی و مثالی که پیمان عزیز اشاره کردن در این هست که مثال اول از دیتابیس استفاده میکنه و جستجو رو در دیتابیس انجام میده.
اما مثال دوم جستجو رو در بین عناصر خود لیست باکس انجام میده.
از هرکدوم که براتون مناسبترهست میتونید استفاده کنید، اما برای ساخت مجموعه های نرم افزاری من مثال پیمان رو پیشنهاد میکنم.
 

پیوست ها

  • ListBoxSearch.rar
    815 بایت · بازدیدها: 106

pro_man

Active Member
Search in list box

مرسی از مثال خوبی که گذاشتی..
ولی من همچین چیزی می خوام..
یه لیست باکس باشه و یه دکمه و تکتس باکس..
حالا وقتی که کاربر توی تکست باکس چیزی نوشت و روی دکمه کلیک کرد توی لیست باکس انتخاب بشه..
مثلا اگه من نوشتم ali در صورتی که توی لیست باکس ali وجود داشته باشه اون آیتم انتخاب بشه:-?
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
اگه فقط میخاید Select بشه، کد دکمه ی Search رو به کد زیر تغییر بدید:
کد:
[COLOR=#0000ff]If[/COLOR] (SearchString$ = [COLOR=#800000]''[/COLOR]) [COLOR=#0000ff]Then[/COLOR] 
  [COLOR=#000090][B]Return[/B][/COLOR]() 
[COLOR=#0000ff]End[/COLOR] 
[COLOR=#000090][B]ListBoxAddItem[/B][/COLOR]("ListBox2","RESET") 
[COLOR=#000090][B]ListBoxGetItems[/B][/COLOR]("ListBox","AllItems$,ItemsNum$,|,NumItems") 
[COLOR=#0000ff]For[/COLOR] i=[COLOR=#ff0000]1[/COLOR] [COLOR=#0000ff]To[/COLOR] NumItems 
  Item$ = [COLOR=#000090][B]GetArrayItem[/B][/COLOR](AllItems$,|,i) 
  LItem$ = [COLOR=#000090][B]LOW[/B][/COLOR](Item$) 
  SearchString$ = [COLOR=#000090][B]LOW[/B][/COLOR](SearchString$) 
  POS = [COLOR=#000090][B]POS[/B][/COLOR](SearchString$,LItem$) 
  [COLOR=#0000ff]If[/COLOR] (POS) [COLOR=#0000ff]Then[/COLOR] 
    [COLOR=DarkGreen]/*Item$ = Item$ + '  [' + GetArrayItem(ItemsNum$,|,i) + ']' 
    ListBoxAddItem("ListBox2","Item$")*/[/COLOR] 
    Num = [COLOR=#000090][B]VAL[/B][/COLOR]([COLOR=#000090][B]GetArrayItem[/B][/COLOR](ItemsNum$,|,i)) 
    [COLOR=#000090][B]ListBoxSelectItem[/B][/COLOR]("ListBox","Num") 
    [COLOR=#000090][B]Refresh[/B][/COLOR]("") 
  [COLOR=#0000ff]End[/COLOR] 
[COLOR=#0000ff]Next[/COLOR] i
فراموش نکنید که تیک Multiselection در ListBox رو فعال کنید.
 

pro_man

Active Member
آقا دمت گرم همون چیزی بود که می خواستم:rose:
حالا یه سوال دیگه..میشه کاری کرد که آیتم ها یکی یکی انتخاب بشه؟مثلا ما توی لیست باکس داریم :
AFB
AFC
AFD
حالا وقتی روی سرچ کلیک کردم اول AFB انتخاب بشه اگه باز کلیک کردم AFC و اگه بازم کلیک کردیم AFD انتخاب بشه و اینه روند ادامه پیدا کنه تا زمانی که باز به AFB برسیم
 

msnv

Well-Known Member
میشه کاری کرد که آیتم ها یکی یکی انتخاب بشه؟مثلا ما توی لیست باکس داریم :
AFB
AFC
AFD
حالا وقتی روی سرچ کلیک کردم اول AFB انتخاب بشه اگه باز کلیک کردم AFC و اگه بازم کلیک کردیم AFD انتخاب بشه و اینه روند ادامه پیدا کنه تا زمانی که باز به AFB برسیم

اگه به دستورات جناب nevercom توجه کنین میبینین که از یک حلقه For برای یافتن یک آیتم استفاده شده است به عبارت دیگر این حلقه از ابتدای لیست باکس شروع میکند و تا انتها انرا چک میکند و آیتم های موجود را با عبارت جستجو مقایسه میکند و هر چند عدد آیتم که با عبارت جستجو یکسان بود را انتخاب میکند
برای اینکه این عملکرد لحظه این بشود یعنی یکباره همه آیتم های مشابه انتخاب نشوند میتوانید حلقه For را حذف و بجای آن کلید متغیر "i" را بصورت "i=i+1" در ابتدای دستورات بنویسین با اینکار با هربار اجرای دستورات یک واحد به i اضافه شده و آیتم متناسب با مقدار متغیر i با عبارت مورد جستجو مقایسه میشود و در انتهای دستورات هم یک دستور شرطی نوشته که اگر مقدار متغیر برابر انتهای لیست شده مجدا ریست شود
دستورات فوق را بصورت زیر ویرایش کردم

کد:
If (SearchString$ = '') Then 
  Return() 
End 
ListBoxAddItem("ListBox2","RESET") 
ListBoxGetItems("ListBox","AllItems$,ItemsNum$,|,NumItems") 
  
i=i+1
  Item$ = GetArrayItem(AllItems$,|,i) 
  LItem$ = LOW(Item$) 
  SearchString$ = LOW(SearchString$) 
  POS = POS(SearchString$,LItem$) 
  If (POS) Then 

    Num = VAL(GetArrayItem(ItemsNum$,|,i)) 
    ListBoxSelectItem("ListBox","Num") 
  End 
if (i>=NumItems) Then
    i=1
End
موفق باشید
 
آخرین ویرایش:

silvercover

کاربر متخصص
من پیشنهاد میکنم اگر کار با پلاگین ها و علی الخصوص sqlite رو بلدین از اون استفاده کنید. هم برای تکنیک های مختلف جستجو و هم برای نگهداری آیتم های لیست باکس و...

توی انجمن توی بخش آموزش پلاگین بخش کار با عملگر Like رو مشاهده کنید.
 

جدیدترین ارسال ها

بالا