جستجو در ليست باكس

داخل نمونه اي كه گذاشتم يه ليست باكس هست كه ليستي رو از فايل ضميمه شده در داخل خود ليست ميكنه
مشكل اول اينه كه در داخل اديت باكس گزينه اي رو تايپ و جستجو ميكنيم فقط اولي رو پيدا ميكنه و به سراغ گزينه دوم يا مشابه نميره در بعضي از مثالها ديدم كه مثلا اگه دو تا مورد مشابه هست هردو رو با هم هاي لايت ميكنه كه اينم خودش يه مشكله و من ميخوام بعد از پيدا كردن گزينه اول با دوباره كليك كردن روي دكمه سرچ به سراغ گزينه دوم رفته و اولي رو از حالت انتخاب خارج كنه.
دوم اينكه نام گزينه انتخابي رو در داخل اديت باكس نشون نميده و من ميخوام پس از انتخاب گزينه و بسته شدن ليست باكس نام گزينه انتخابي در داخل كادر اديت باكس نشون داده بشه.
ممكنه به جاي يك فايل متني من به ليست باكس بگم كه ليست تعدادي از تصاوير رو در پوشه اي خاص برام لود كنه در اين صورت ميخوام نام تصوير يا هر فايل انتخابي ديگه اي كه در داخل ليست باكس انتخاب ميشه در داخل اديت باكس نشون داده بشه.
و سوم:
ليست به صورت فارسيه از چه فونتي استفاده كنم كه هم ليست فارسي باشه و هم شماره گذاري فارسي باشه و هم در داخل ديگر كامپيوتر ها بدون مشكل نشون داده بشه و اون فونت رو ويندوز به صورت استاندارد ساپورت كنه.
در ضمن ليست باكس فارسي رو از چپ رديف ميكنه و از چپ هم شماره گذاري ميكنه توي يه تاپيك جدا مطرح كردم ولي به نتيجه اي نرسيدم حالا نمونه گذاشتم اگه كسي تونست عيبهارو برطرف كنه ممنون ميشم.
 

پیوست ها

  • list box.rar
    2.2 کیلوبایت · بازدیدها: 35
آخرین ویرایش:

evil_gates

اين نيز بگذرد ...
دوست عزيز
در مورد سوال اول شما قبلا يكي از دوستان تاپيكي به نام مشاعره (اگه اشتباه نكنم) زده و سوالي شبيه به همين سوال رو داشت . فكر ميكنم الگوريتيمي كه اونجا پيشنهاد شد براي جستجوي يك عبارت در يك رشته ميتونه پاسخي براي سوال شما باشه و كافيه اون مثال رو يكم دستكاري كنين تا به جواب برسين.
در مورد انتخاب نوع فونت هم قبلا تو يه تاپيك ديگه بحث شد و من پيشنهاد خودم رو دادم. اونجا رو يه بار ديگه مطالعه كنين.
موفق باشيد
 
اول ممنون.
دوم اينكه مثال مشاعره برعكس كار منه و تفاوت زيادي هم داره چون در مثال مشاعره مقدار از شي اديت باكس به شي پاراگراف وارد ميشه و براي بار دوم همين مقدار اول با مقدار بعدي كه دوباره ميخواد وارد شي پاراگراف بشه مقايسه ميشه و اگهمساوي باشه ارور ميده.
اگه لطف كنيد و قبل از هر كاري مثالي رو كه گذاشتم ببينيد بهتر ميتوني كمكم كني در ضمن من ميخوام كه تغريبا همين جستجوگر خودم اطلاح بشه چون تو مثالهاي نسخه 4,9,8 بيلدر يك دموي كامل مربوط به جستجو در ليست باكس بود ولي از چند نظر همشون ايراد داشتن كه مهمترينشون اين بود كه:
واسه جستجو شروع ميكرد از آيتم اول ليست باكس تا آيتم آخر رو يكي يكي هاي لايت ميكرد و بعد از پايان كل ليست باكس نتيجه رو گزارش ميداد
اين در ليستهاي طويل وقتگيره
اگر مثالو ببينيد خواهيد ديد كه اولين آيتم را زود پيدا ميكنه ولي سراغ دومي نميره . در ضمن هميني هم كه من ساختم در ليستهاي بيش از 200 آيتم وقتگير ميشه و كند عمل ميكنه
از بچه هاي حرفه اي ميخوام كه اين مشكلو واسم حل كنن مثالشو ببينن و بعد نظر بدن.
ممنون.
 

evil_gates

اين نيز بگذرد ...
اول ممنون.
دوم اينكه مثال مشاعره برعكس كار منه و تفاوت زيادي هم داره چون در مثال مشاعره مقدار از شي اديت باكس به شي پاراگراف وارد ميشه و براي بار دوم همين مقدار اول با مقدار بعدي كه دوباره ميخواد وارد شي پاراگراف بشه مقايسه ميشه و اگهمساوي باشه ارور ميده.
اگه لطف كنيد و قبل از هر كاري مثالي رو كه گذاشتم ببينيد بهتر ميتوني كمكم كني در ضمن من ميخوام كه تغريبا همين جستجوگر خودم اطلاح بشه چون تو مثالهاي نسخه 4,9,8 بيلدر يك دموي كامل مربوط به جستجو در ليست باكس بود ولي از چند نظر همشون ايراد داشتن كه مهمترينشون اين بود كه:
واسه جستجو شروع ميكرد از آيتم اول ليست باكس تا آيتم آخر رو يكي يكي هاي لايت ميكرد و بعد از پايان كل ليست باكس نتيجه رو گزارش ميداد
اين در ليستهاي طويل وقتگيره
اگر مثالو ببينيد خواهيد ديد كه اولين آيتم را زود پيدا ميكنه ولي سراغ دومي نميره . در ضمن هميني هم كه من ساختم در ليستهاي بيش از 200 آيتم وقتگير ميشه و كند عمل ميكنه
از بچه هاي حرفه اي ميخوام كه اين مشكلو واسم حل كنن مثالشو ببينن و بعد نظر بدن.
ممنون.


سلام
منظور من استفاده از الگوريتم پيشنهادي تو اون پست بود نه خود اون مثال
به نظر من براي حل مشكلت بايد عبارتي كه تو اديت باكس وارد ميشه رو تو يك متغير رشته اي بريزي و بعد با استفاده از يك حلقه آيتمهاي موجود تو ليست باكس رو هم يكي يكي به يك متغير رشته اي ديگه نسبت بدي و بعد اين دوتا متغير رو با هم مطابقت بدي (يعني چك كني كه آيا رشته متغير اول در رشته متغير دوم هم وجود داره يا به عبارت ديگه متغير اول زير رشته متغير دوم ميتونه باشه يا نه)
در صورتي كه شرط صحيح باشه يعني رشته متغير اول در متغير دوم موجود بود پس اون آيتم به صورت هاي‌لايت در مياد. و بعد حلقه به سراغ آيتم بعدي ليست باكس ميره و الي آخر

رو پيشنهاد من فكر كن اگه نتونستي حلش كني فرصت كردم مثالت رو برات اصلاح ميكنم

موفق باشي
 

evil_gates

اين نيز بگذرد ...
نميدونم تونستي مشكلت رو حل كني يا نه
ولي من بر اساس الگوريتمي كه تو پست قبلي گفتم مثال رو برات اصلاح كردم
موفق باشي
 

پیوست ها

  • list box.zip
    1.1 کیلوبایت · بازدیدها: 38
ممنون از evil gates ولي متا سفانه درست نشد .
شما يا به مثال دقت نكردي يا طوماري رو كه من نوشتم نخوندي ميدونم گذشتن از وقت اونم به صورت مجاني كار هر كسي نيست اينو قبلا مدير انجمن بهم تذكر داده ولي اگه دوباره خواستي كمك كني به اين چند نكته دقت كن چون اين مثالي كه شما برام حل كردي من خودم قبلا داشتم.
اول اينكه مثال من يك كامبو باكسه و من ميخوام آيتم انتخابي داخل ليست باكسو توي اديت باكس نشون بده تا وقتي كه كامبو باكس بسته است بدونيم چه آيتمي فعاله.
دوم اينكه در موقع جستجو اگر آيتم اول پيدا شد پس از كليك دوباره بر روي كليد جستجو اگر آيتم مشابهي بود آيتم اول رو از حالت انتخاب خارج كنه و آيتم دوم رو هاي لايت كنه نه اينكه همه رو با هم هاي لايت كنه و اگر آيتمي براي جستجو پيدا نشد يا آيتم مشابهي نبود مثل همين مثال خودم يك پيغام به كاربر بده.
مثالي كه من درست كردم ايرادش اينه كه فقط اولين مورد جستجو رو پيدا ميكنه و غير فعال ميشه.
بازم ممنون ولي اگه بقيه بچه ها هم كمكم ميكردن بد نميشد ها.
 

evil_gates

اين نيز بگذرد ...
دوست عزيز
كاري كه من كردم پيشنهاد يك الگوريتم براي سرچ در ليست باكس و ساختن مثالي بر اساس همين الگوريتم بود. اينكه قبلا خودتون همچين مثالي رو ساختين رو نميدونستم وگرنه اين مثال رو نميزاشتم.
براي نوشتن برنامه هميشه راههاي زيادي هست و الگوريتم هاي متفاوتي. شما مي تونين روشي كه من گفتم رو با كمي تغييرات به همون چيزي تبديل كني كه خودتون ميخواي

و اما بعد:

ول اينكه مثال من يك كامبو باكسه و من ميخوام آيتم انتخابي داخل ليست باكسو توي اديت باكس نشون بده تا وقتي كه كامبو باكس بسته است بدونيم چه آيتمي فعاله.

براي اينكه آيتمي كه تو ليست باكس فعال هست رو تو اديت باكس نشون بدين فقط كافيه از دستور DisplayValue يا LoadText استفاده كنين كه بعيد ميدونم با اين فرامين آشنا نباشين.

دوم اينكه در موقع جستجو اگر آيتم اول پيدا شد پس از كليك دوباره بر روي كليد جستجو اگر آيتم مشابهي بود آيتم اول رو از حالت انتخاب خارج كنه و آيتم دوم رو هاي لايت كنه نه اينكه همه رو با هم هاي لايت كنه و اگر آيتمي براي جستجو پيدا نشد يا آيتم مشابهي نبود مثل همين مثال خودم يك پيغام به كاربر بده.

و براي حل اين مشكل هم ميتونيد بعد از اينكه يك آيتم پيدا شد حلقه رو با فرمان Return متوقف كنين، يك پيغام به كاربر بدين و شرط ادامه حلقه رو تاييد كاربر بزارين (در صورتي كه كاربر مايل به ادامه جستجو بود تاييد مي كنه و با اين عمل با دستور ListBoxDeselectItem آيتم قبلي غير فعال و آيتم جديدي كه پيدا ميشه فعال ميشه)

اين چيزي بود كه به ذهن من مي رسيد براي حل مشكلتون. حالا اگه كافي نيست و مشكل شما رو حل نميكنه قطعا دوستان ديگه كه از من بيشتر ميدونن كمك مي كنن.

موفق باشيد
 
آخرین ویرایش:
ببین بهتره یه کار خیلی ساده تر بکنی یه بلک لیست درست کن که بعد از سرچ یافته ها شو بریز تو اون و بعدشم یه دکمه درست کن که با دو بار کلیک بر روی اون یه عددی رو مثل x یا چیز دیگه ای رو یکی ببره بالا و در آخر همه دستورای دکمت به ایف بزار که
اگه اون ایکس ما به توتال رسیده بود بکنتش صفر اونوقت میتونی با همون ایکس که به دست میاری به برنامه بفهمونی که شماره چند رو پلی کنه

اگه خواستید بگید تا بیشتر توضیح بدم البته فکر نکنم چیز به این سادگی نیاز به توضیح داشته باشه
 

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

بالا