Fa درباره شی لیست باکس

icefall

Member
سلام به دوستان عزیز
در پروژه ام یک دیتا بیس دارم که می تونم در اون جستجو داشته باشم و رکوردهای یافت شده رو در یک لیست باکس مشاهده کنم. هر یک از رکوردهای یافت شده به یک فایل پی در اف لینک شدن که با دابل کلیک روی اون رکورد در لیستِ نمایش داده شده، فایل مربوط قابل مشاهده خواهد بود. تا اینجای کار که مشکلی ندارم. اما مواردی هستش پیرامون لیست باکس. می خوام بدونم آیا این موارد قابل حل هستند و اگه آره به چه صورت میشه رفعش کرد؟

1- آیا میشه با کلیدهای جهتی بالا و پایین کیبورد روی رکوردهای لیست حرکت کرد؟ و با فشردن کلید اینتر فایل پی دی اف مورد نظر رو باز کرد؟

2- آیا امکان داره علامت ماوس رو از فلش به دست تغییر داد تا این مطلب که رکوردها هایبرلینک هستند واضح باشه؟

3- آیا میشه با قرارگرفتن ماوس روی رکورد (و نه با کلیک کردنش)، رنگ اون رکورد با بقیه تفاوت کنه و یا هایلایت بشه؟ در حال حاضر فقط با یک بار کلیک کردن روی رکورد میشه اون رو هایلایت کرد.

4- رکوردهای من از تعداد بالایی کاراکتر تشکیل شدن. این تعداد کاراکترها از حد یک خط تجاوز کرده. در حال حاضر هر رکورد فقط در یک خط نمایش داده میشه و از اونجایی که کاراکترها در یک خط جا نمی گیرن، علامت سه نقطه در سمت راست هر رکورد قرار می گیره و این طوری بخشی از رکورد نمایش داده نمیشه. آیا میشه تنظیمات لیست رو طوری قرار بدیم که رکوردهای طولانی در دو خط نمایش داده بشن و یا حداقل علامت سه نقطه در سمت چپ رکورد قرار بگیره؟ لازم به ذکره که رکوردهام فارسی هستند و لیست باکسم راست چین شده.

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

evil_gates

اين نيز بگذرد ...
سلام به دوستان عزیز
در پروژه ام یک دیتا بیس دارم که می تونم در اون جستجو داشته باشم و رکوردهای یافت شده رو در یک لیست باکس مشاهده کنم. هر یک از رکوردهای یافت شده به یک فایل پی در اف لینک شدن که با دابل کلیک روی اون رکورد در لیستِ نمایش داده شده، فایل مربوط قابل مشاهده خواهد بود. تا اینجای کار که مشکلی ندارم. اما مواردی هستش پیرامون لیست باکس. می خوام بدونم آیا این موارد قابل حل هستند و اگه آره به چه صورت میشه رفعش کرد؟

1- آیا میشه با کلیدهای جهتی بالا و پایین کیبورد روی رکوردهای لیست حرکت کرد؟ و با فشردن کلید اینتر فایل پی دی اف مورد نظر رو باز کرد؟

2- آیا امکان داره علامت ماوس رو از فلش به دست تغییر داد تا این مطلب که رکوردها هایبرلینک هستند واضح باشه؟

3- آیا میشه با قرارگرفتن ماوس روی رکورد (و نه با کلیک کردنش)، رنگ اون رکورد با بقیه تفاوت کنه و یا هایلایت بشه؟ در حال حاضر فقط با یک بار کلیک کردن روی رکورد میشه اون رو هایلایت کرد.

4- رکوردهای من از تعداد بالایی کاراکتر تشکیل شدن. این تعداد کاراکترها از حد یک خط تجاوز کرده. در حال حاضر هر رکورد فقط در یک خط نمایش داده میشه و از اونجایی که کاراکترها در یک خط جا نمی گیرن، علامت سه نقطه در سمت راست هر رکورد قرار می گیره و این طوری بخشی از رکورد نمایش داده نمیشه. آیا میشه تنظیمات لیست رو طوری قرار بدیم که رکوردهای طولانی در دو خط نمایش داده بشن و یا حداقل علامت سه نقطه در سمت چپ رکورد قرار بگیره؟ لازم به ذکره که رکوردهام فارسی هستند و لیست باکسم راست چین شده.

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

دوست عزيز
اول اينكه چند تا سوال اونم تو يه تاپيك؟ :wink:

براي سوال اولتون بله ميشه با كليدهاي جهت دار تو ركوردهاي ليست باكس پيمايش كرد البته به شرط اينكه حداقل يك آيتم انتخاب شده باشه.

با دستور ListBoxSelectItem اولين آيتم ليست باكس رو به حالت انتخاب در بياريد و با كليدهاي جهت دار بالا و پايين بريد.

و براي اينكه رو آيتم موردنظر با اينتر زدن دستوري اجرا بشه يك اسكريپت ايجاد كنيد و تو قسمت Keyboard كليد Enter رو انتخاب كنيد.

تو اين اسكريپت ابتدا با دستور ListBoxGetSelectedItems آيتمي كه به حالت انتخاب درومده رو بدست بياريد و متناسب با آيتم بدست اومده دستور موردنظر رو اجرا كنيد.

براي سوال دومتون در حالت عادي چنين امكاني رو نداريد مگه اينكه از روشي غير از ابزار ليست باكس mmb براي ساخت ليست باكس استفاده كنيد (كه البته پيچيده ميشه)

اگه منظورتون از طرح اين سوال اينه كه با يكبار كليك كردن روي آيتم دستوري اجرا بشه (مثل لينكها) ميتونيد كدهاي موردنظر تو قسمت On Selection بنويسيد.

براي سوال سوم هم عرض ميكنم در حالت عادي خير چنين امكاني نيست. مگه اينكه محدوده ليست باكس رو با توابع Objectx و ObjectY بدست بياريد و همينطور موقعيت ماوس رو با Mou*** و MouseY در هر لحظه بدست بياريد و مقايسه كنيد كه آيا ماوس در محدوده ليست باكس قرار داره يا نه.
در صورتي كه قرار داشت نسبت به موقعيتي كه از صفر نسبت به محور Y هاي ليست باكس پيدا ميكنه نتيجه ميگيريم كه روي كدوم آيتم قرار داره و با دستور ListBoxSelectItem اون آيتم رو انتخاب ميكنيم.

در مورد سوال آخرتون هم خير امكان دو خطي كردن ليست باكس رو نداريد. در عين حال ابزار ليست باكسي كه mmb داره يك ليست باكس انگليسي هست و سه نقطه ها رو در سمت راست عبارت شما ميزنه (چه متن شما انگليسي باشه چه فارسي)

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

icefall

Member
مشکلات باقیس

سلام به همه دوستان

جناب evil_gate عزیز بسیار متشکرم از راهنمایی هاتون.

عرض کنم که مورد یک تا حدودی حل شد منتها یک مسئله باقیست. اونم این که قبلاً کلید اینتر رو برای اجرای اسکریپت دیگری اختصاص دادم و حالا برای اختصاص اینتر به منظور باز کردن فایل انتخابی (یک اسکریپت جدید) مشکل دارم. لطفا فایل پیوستی بنده رو مشاهده بفرمایید.

در مورد سوال سوم هم متوجه منظورتون شدم و این جا هم مسئله دیگری مانع راه هست و اونم اینه که گاهی تعداد یافته ها بیشتر از اونی هستش که در لیست باکس نمایش داده بشه. منظورم اینه که در آن واحد لیست باکس قادر به نمایش 11 مورد هستش و نه همه یافته ها.

در مورد مشکل چهارمم نهایت تلاشم رو کردم اما خب متاسفانه حاصل مطلوب به دست نیومد که لطف شما رو می طلبه.:wink:

باقی دوستان هم اگه کمکی کنن بسیار ممنون خواهم شد.


Loo30fer عزیز

دانلود فایل آموزشی مرحمتی تون ممکن نشد! مشکل از کدوم وره؟:-?
 

پیوست ها

  • ListBox.rar
    890.8 کیلوبایت · بازدیدها: 98

evil_gates

اين نيز بگذرد ...
سلام به همه دوستان

جناب evil_gate عزیز بسیار متشکرم از راهنمایی هاتون.

عرض کنم که مورد یک تا حدودی حل شد منتها یک مسئله باقیست. اونم این که قبلاً کلید اینتر رو برای اجرای اسکریپت دیگری اختصاص دادم و حالا برای اختصاص اینتر به منظور باز کردن فایل انتخابی (یک اسکریپت جدید) مشکل دارم. لطفا فایل پیوستی بنده رو مشاهده بفرمایید.

در مورد سوال سوم هم متوجه منظورتون شدم و این جا هم مسئله دیگری مانع راه هست و اونم اینه که گاهی تعداد یافته ها بیشتر از اونی هستش که در لیست باکس نمایش داده بشه. منظورم اینه که در آن واحد لیست باکس قادر به نمایش 11 مورد هستش و نه همه یافته ها.

در مورد مشکل چهارمم نهایت تلاشم رو کردم اما خب متاسفانه حاصل مطلوب به دست نیومد که لطف شما رو می طلبه.:wink:

باقی دوستان هم اگه کمکی کنن بسیار ممنون خواهم شد.


Loo30fer عزیز

دانلود فایل آموزشی مرحمتی تون ممکن نشد! مشکل از کدوم وره؟:-?

دوست عزيز

در مورد سوال اولتون چون شما اين امكان رو نداريد كه تو يك صفحه دوتا اسكريپت رو همزمان با كليد Enter اجرا كنيد پيشنهاد ميكنم دستور مربوط به اجراي فايل pdf تون رو تو همون اسكريپتي كه كليد Enter رو براي اجراش فعال كرديد بنويسيد.

اين دستورات رو در ابتداي اسكريپت بنويسيد يك شرط براي اجراشون قرار بديد. در پايان دستوراتتون و قبل از اتمام شرط هم دستور Return رو استفاده كنيد.

در اينصورت با هربار فشردن كليد Enter اول شرط چك ميشه و در صورت صحت شرط دستورات موردنظر اجرا و در نهايت با Return از اجراي ساير دستورات اين اسكريپت جلوگيري ميشه و در صورتي كه شرط شما صحيح نباشه دستورات قبلي كه براي اين اسكريپت نوشته بوديد اجرا خواهند شد.

در مورد مشكل دومتون مثالي رو كه پيوست كردم ببينيد. تو اين مثال من با پلاگين SmallPlugin رو موقعيت موردنظر عمل كليك رو شبيه سازي كردم تا در صورتي كه ماوس رو منطقه ليست باكستون بود آيتم مربوطه انتخاب بشه.

براي سوال آْخر هم با فرض اينكه عبارت شما تو متغيري به نام $str ذخيره شده اين كد 10 كاراكتر اول اين رشته رو كپي و به ابتداي اون ... اضافه و تو ليست باكس اضافه ميكنه:
کد:
item$ = StrCopy(str$,1,10)
item$ = '...' + item$
ListBoxAddItem("list","item$")

موفق باشيد
 

پیوست ها

  • listbox.zip
    8.1 کیلوبایت · بازدیدها: 56

icefall

Member
جناب evil_gate عزیز
میشه پلاگین مذکور رو واسم بذارید اینجا؟
مقسی بوکو.
 

icefall

Member
جناب evil_gates عزیز
با تشکر از راهنمایی های ارزشمندتون.
در مورد هایلایت کردن رکوردها در لیست باکس از پلاگین Smallplugin استفاده کردید، راه حل جالبیه. فقط یک نکته:
هر یک از رکوردهای من در لیست باکس در واقع لینک هستش به یک فایل پی دی اف که با دابل کلیک روی رکورد، فایل پی در اف مربوطه باز میشه. استفاده از راه حل شما برای من ایجاد مشکل می کنه چون شما دارید کلیک چپ رو شبیه سازی می کنید و این برای من که همزمان در دابل کلیک لیست باکس کد نوشتم باعث میشه که فایل های پی در افم هی تند و تند باز بشن.
راه حل مرحمت می فرمایید لطفاً؟
پاینده باشید
 

evil_gates

اين نيز بگذرد ...
جناب evil_gates عزیز
با تشکر از راهنمایی های ارزشمندتون.
در مورد هایلایت کردن رکوردها در لیست باکس از پلاگین Smallplugin استفاده کردید، راه حل جالبیه. فقط یک نکته:
هر یک از رکوردهای من در لیست باکس در واقع لینک هستش به یک فایل پی دی اف که با دابل کلیک روی رکورد، فایل پی در اف مربوطه باز میشه. استفاده از راه حل شما برای من ایجاد مشکل می کنه چون شما دارید کلیک چپ رو شبیه سازی می کنید و این برای من که همزمان در دابل کلیک لیست باکس کد نوشتم باعث میشه که فایل های پی در افم هی تند و تند باز بشن.
راه حل مرحمت می فرمایید لطفاً؟
پاینده باشید

دوست عزيز
تو مثالي كه براتون پيوست كرده بودم لطفا دستور راست كليك رو تست كنيد و نتيجه رو ببينيد. (به جاي ClickMouseLeft از ClickMouseRight استفاده كنيد.)
 

icefall

Member
این کار رو هم امتحان کرده بودم منتها باعث میشه کلیک چپ هم کلا از کار بیفته و عمل نکنه.
 

evil_gates

اين نيز بگذرد ...
این کار رو هم امتحان کرده بودم منتها باعث میشه کلیک چپ هم کلا از کار بیفته و عمل نکنه.

بنابراين توصيه ميكنم يا از روش جناب nevercom استفاده كنيد و يا اينكه چيزي شبيه ليست باكس شبيه سازي كنيد كه البته كمي پيچيده ميشه.

تعدادي Text رو تو يك ستون قرار بديد و تو سمت راست يا چپشون يك اسكرول بار بسازيد. تعدادي از عبارت‌هاي موردنظرتون رو تو به ترتيب تو اين Text ها فراخواني كنيد.

بعد محاسبه كنيد به نسبت جابجايي دستگيره اسكرول بار شما عبارتهاي بعدي جايگزين عبارتهاي فعلي Textها بشه.
 

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

بالا