PDA

View Full Version : درسترسی به نام Menuitem در زمان اجرا



gh_fereydonpoor
چهارشنبه 07 اردیبهشت 1384, 14:35 عصر
سلام به همه
درسترسی به نام Menuitem در زمان اجرا
مرسی ممنون

k_m
چهارشنبه 07 اردیبهشت 1384, 16:31 عصر
یعنی چی؟؟بیشتر توضیح بده

gh_fereydonpoor
جمعه 09 اردیبهشت 1384, 05:52 صبح
سلام خیلی ساده آیا این کد که در VB.6.0 بوده اینجا هم هست (که نیست) و چطوری باید این کارو کرد؟
MenuItem1.Name
یا چطوری میشه با یک For Each کل منو ها رو دید و خصوصیت name آنها رو بررسی کرد؟
مرسی ممنون

یاشار
جمعه 09 اردیبهشت 1384, 09:40 صبح
از نام منویی که آیتم ها بهش تعلق دارند استفاده کنید





MainMenu1.MenuItems.Item(5).Text = "Sample"

gh_fereydonpoor
شنبه 10 اردیبهشت 1384, 06:29 صبح
سلام دوست عزیز
مرسی
ولی مشکل اینجاست که Text همه منوها فارسی هست و چندتایی از آنها تکراری آن وقت چه کار کنم؟
یا علی

rezaei manesh
شنبه 10 اردیبهشت 1384, 14:05 عصر
سلام
من قبلا اینو مطرح کرده بودم
بگردی پیدا می کنی
یا حق
:sunglass:

gh_fereydonpoor
شنبه 10 اردیبهشت 1384, 18:46 عصر
سلام rezaei manesh عزیز
بله من هم به این کد رسیدم ولی باز هم از نام کار می کند و محدود به 2 لایه تودرتو منو است در صورتی که مشکل ما فارسی بودن و همنام بودم بعضی از SUBMenu ها است
مرسی از توجه تان

rezaei manesh
شنبه 10 اردیبهشت 1384, 19:01 عصر
سلام
نه من name منو هامو یکی کردم و با شماره 0 تا آخرین ایتم منو و با کپشن های مختلف و حتی یکسان
اون وقت می تونی به راحتی با اونا کار کنی
:sunglass:

یاشار
یک شنبه 11 اردیبهشت 1384, 07:48 صبح
هر منو آیتمی یه اسم داره یه متن. اسم آیتم‌ها نمی‌تونن تکراری باشند ولی متنشون میتونن. مثل دو تا TextBox که خاصیت Text شون می‌تونن برابر باشن ولی اسم هر دو تاشون نمی‌تونه TextBox1 باشه. فارسی بودن Text هم تاثیری توی نحوه دسترسی ما نخواهد داشت. اگر شما اسم آیتم رو مشخص نکنید، Designer به صورت اتوماتیک و به ترتیب اضافه شدن آیتم‌ها به اونها اسم MenuItem1 و MenuItem2 و ... می‌ده.

شما اگر توضیح بدید که آیتم‌هاتون موقع اجرا اضافه می‌شن (دینامیک) یا موقع طراحی فرم (ثابت)، و اینکه روی چه اساسی می‌خواهید بهشون دسترسی داشته باشید ( به اساس شماره یا اسم یا .... ) می‌شه یه فکری به حالش کرد.

gh_fereydonpoor
دوشنبه 12 اردیبهشت 1384, 17:54 عصر
سلام یاشار جان
بابا اینقدر هم ... نیستیم که ندونیم ID نمی تونه تکراری باشه
بله Design Time ایجاد شده اند و Text آنها تکراری است .
من می توانم با همان For Loop یا For Each بخوانم ولی از کجا بفهمم که منظور از کل ، کل منوی شماره 1 است یا کل برای منوی 100؟

یاشار
دوشنبه 12 اردیبهشت 1384, 19:42 عصر
من کی گفتم شما ... هستین ؟ آخه تو پست بالاییش نوشته شده بودن


من name منو هامو یکی کردم

caption هم مال VB6 بود، تو Net. منوآیتم‌ها Caption ندارند. یکمی توی استفاده از اسم‌ها دقت کنیم این مسایل پیش نمیاد. چون من که اینور پست شما رو می‌خونم و نمی‌دونم منظور شما چی بوده. اینجا هم ارتباط یه کم سخت‌تر از وقتیه که کنار هم وایستادیم و داریم حرف می‌زنیم.اگه یه کم سوال رو واضح‌تر بگین،هم کسی که می‌خواد جواب بده گیج نمی‌شه، هم جوابش بی‌ربط از آب در نمیاد.

مثلا شما نوشتین "کل منوی شماره 1 یا کل برای منوی 100". یا گفتین "ID نمی‌تونه تکراری باشه". من فرض میکنم که منظور شما از ID خاصیت Name منوآیتم باشه و منظورتون از منو، منوآیتم باشه.

به هر حال ندانستن دلیل ... بودن نیست، نپرسیدن ... است :D


و اما بریم سر اصل مطلب. هر کدوم از MenuItem ها یک خاصیت Parent دارن و یک خاصیت MenuItems که از این طریق ترتیب نمایش‌شون مشخص می‌شه. اگر Parent یک آیتم Nothing باشه، معلوم می‌شه که در سطح ریشه است.اگر MenuItems یک آیتم Nothing باشه، معلوم می‌شه اون آیتم منشعب نشده. اگرهم منو‌های مربوط به یک منوی دیگه رو بخواین از طریق MenuItems همه اونها رو بدست میاریم.

بنابراین با استفاده از یه For و چک کردن شرطهای مناسب می‌تونیم آیتمی که دنبالش می‌گردیم رو پیدا کنیم.