PDA

View Full Version : سوال: گرفتن نام تمام فرمهای موجود در برنامه



ali190
پنج شنبه 17 شهریور 1390, 19:03 عصر
باسلام
من میخوام با استفاده از حلقه زیر نام تمام فرمهای موجود در برنامه رو برگردونم ٰ منتها توسط این حلقه فقط نام اولین فرم برگشت داده میشه:
Dim frmCurr As Form
For Each frmCurr In Forms
MsgBox frmCurr.Caption
Next frmCurr

میشه بگید اشکال کجاست؟

vbhamed
جمعه 18 شهریور 1390, 00:38 صبح
سلام

اين دستور فقط فرمهايي كه لود شده اند رو بر مي‌گردونه

ali190
جمعه 18 شهریور 1390, 10:10 صبح
سلام
ممنون از توضیحاتتون
چطور میتونم نام تمام فرمهای موجود در برنامه رو با یک حلقه برگردونم (چه اونهایی که لود شده اند و چه اونهایی که لود نشده اند)
ممنون میشم راهنماییم کنید
یاعلی

vbhamed
جمعه 18 شهریور 1390, 16:32 عصر
سلام

هدفتون از اين كار چيه ؟

ali190
جمعه 18 شهریور 1390, 18:13 عصر
من در برنامه ام از کدجاک 15 استفاده کردم ام
در برنامه ام حدود 50 تا فرم دارم
برای اینکه قالب کدجاک رو در هر فرمی اعمال کنم میبایست کد زی رو بنویسم:
Form1.Show
CommandBars.EnableOffice2007FrameHandle Form1.hwnd
برای اینکه در همه جا CommandBars.EnableOffice2007FrameHandle Form1.hwnd این کد تکرار نشه میخوام توسط یک تابع فرمت کدجاک رو در ابتدای برنامه (در Splash) در همه فرمهام اعمال کنم
بعدش هر فرمبی رو که show میکنم فرمت کدجاک درش اعمال شده
اگر نام همه فرمهام رو توسط یک حلقه بدست نیارم مجبورم این کد CommandBars.EnableOffice2007FrameHandle form name.hwnd رو برای 50 تا فرمم در یک تابع اعمال کنم
اما با اون حلقه در کدهام صرفه جویی میکنم
امیدورام منظورم رو رسونده باشم
یاعلی

M.T.P
جمعه 18 شهریور 1390, 20:31 عصر
سلام
روشتون روش خوبی نیست ، بارگزاری همه فرم ها در حافظه تنها برای صرفه جویی در نوشتن کد نمیتونه کار درستی باشه اما به نظر من بهترین و اصولی ترین روش برای شما اینه که یک سابروتین پابلیک در یک ماژول به شکل زیر تعریف کنید:


Public Sub SetRibbonTheme(CFrom As Form)
CFrom.CommandBars.EnableOffice2007FrameHandle CFrom.hWnd
End Sub

و به شکل زیر در Form_Load همه فرم ها ازش استفاده کنید:


Call SetRibbonTheme(Me)

vbhamed
پنج شنبه 24 شهریور 1390, 09:39 صبح
سلام

يك راه ديگه هم هست
از SkinFraweWork همون Codejock استفاده كند بعد كنترل SkinFrameWork يك خاصيت داره به نام AutoApplyNewWindows كه اگر True باشه به صورت اتوماتيك اسكين رو روي پنجره هاي جديد اعمال مي‌كنه
البته بايد كنترل SkinFraweWork خودش در فرمي لود بشه كه هميشه تو حافظه هست و بسته نميشه، ميتوني يك فرم مخفي براي همين كار اضافه كني