PDA

View Full Version : در مورد MDIForms



niloufar
چهارشنبه 10 اسفند 1384, 18:12 عصر
دوستان سلام
وقی یه فرم MDI داشته باشیم و یه فرم دیگه رو Child اون کنیم در هنگام اجرا وقتی فرم فرزند رو Maximize کنیم، در صورتی که فرم والد دارای MenuStrip باشه، دکمه های کنترلی (Close و ...) مربوط به فرم فرزند بالای منو قرار میگیره که هیچ جا مرسوم نیست.
آیا این باگ 2005 است یا راهی داره که درستش کنیم؟
ممنون

niloufar
چهارشنبه 10 اسفند 1384, 18:52 عصر
ضمنا دوستان:
چطور میشه در کد نویسی فرم فرزند رو وسط قسمت قابل استفاده فرم پدر قرار داد؟ یا چطور میشه در یه جای دلخواه قرار داد؟ (در پاسخ به دوچیز توجه داشته باشید: 1- مشخصه StartPosition رو بلدم ولی در RunTime مثل اینکه کار نمیکنه 2- اینجا مثل vb6 چیزی مثل مشخصه های ScaleWidth و ScaleHeight و ... پیدا نکردم)

محمد عرب
چهارشنبه 10 اسفند 1384, 23:26 عصر
با سلام
امیدوارم اشتباه نکرده باشم ولی خاصیت ClientSize.width , ClientSize.Height همان کار ScaleHeight , ScaleWidth را میکند.
در مورد StartPosition من قبل از Show() فرم فرزند گذاشتم جواب داد.
تو سیستم من مشکل دکمه بستن و Minimize غیره نبود و درست سر جاشون بودن.
امیدوارم اشتباه نکرده باشم.
-----------------------------
با تشکر
محمد عرب

linux
چهارشنبه 10 اسفند 1384, 23:33 عصر
دوستان سلام
وقی یه فرم MDI داشته باشیم و یه فرم دیگه رو Child اون کنیم در هنگام اجرا وقتی فرم فرزند رو Maximize کنیم، در صورتی که فرم والد دارای MenuStrip باشه، دکمه های کنترلی (Close و ...) مربوط به فرم فرزند بالای منو قرار میگیره که هیچ جا مرسوم نیست.
آیا این باگ 2005 است یا راهی داره که درستش کنیم؟
ممنون

اتفاقا همه جا مرسوم هست office را ببینید این استاندرش همین هست که شما دیدید!
اما کد برای گذاشتن فرم فرزند در وسط.
<code>
Dim frm As New Form2
frm.MdiParent = Me
frm.StartPosition = FormStartPosition.CenterScreen
frm.Show()
</code>
در نظر داشته باشید که برای فرم فرزند دیگه screen دستکاپ ویندوز نیست بلکه فضایی هست که فرم والد در اخیتارش می گذاره.

niloufar
پنج شنبه 11 اسفند 1384, 10:21 صبح
اتفاقا همه جا مرسوم هست office را ببینید این استاندرش همین هست که شما دیدید!


سلام
این دو عکس را ببینید یکیش از WORD است و یکیش از VB. مقایسه کنید!!!

niloufar
پنج شنبه 11 اسفند 1384, 10:39 صبح
اما در مورد کد شما
این کد صحیح عمل میکنه اما اگه همین کار رو تو Form_load بذارید و بجای frm از Me استفاده کنید دیگه عمل نمیکنه
امتحان کنید !!!!

niloufar
پنج شنبه 11 اسفند 1384, 10:40 صبح
اما ClientُSize صحیح بود. ممنون

لطفا در مورد اون دو مشکل هم راهنمایی فرمایید

linux
پنج شنبه 11 اسفند 1384, 11:34 صبح
اما در مورد کد شما
این کد صحیح عمل میکنه اما اگه همین کار رو تو Form_load بذارید و بجای frm از Me استفاده کنید دیگه عمل نمیکنه
امتحان کنید !!!!

این کد را باید در رخداد form_load فرم والد بنویسید و me یعنی فرم والد frm هم یعنی فرم فرزند.
نباید این ها را باهم عوض کنید. در این صورت معلوم هست که نباید برنامه اجرا بشه.

در مورد وضیعت منواستریپ معمولا در اکثر موارد در فرم فرزند منواستریپ قرار نمیدهند شما منواستریپ را در فرم فرزند قرار داده ، خوب در ورد هم فرم فرزند هیچ منو استریپی ندارد اگر
داشته بود دقیقا مثل برنامه شما میشد.
معمولا اگر دقت کرده باشید در اکسس منواستریپ در فرم والد هست و با عوض شدن فرم فرزند در منو استریپ هم به تناسب نیاز آیتم هایی اضافه یا کم میشود. شما بگردید ببیند برنامه سراغ دارید که در فرم فرزند منواستریپ قرار داده باشند؟

niloufar
یک شنبه 14 اسفند 1384, 14:58 عصر
این کد را باید در رخداد form_load فرم والد بنویسید و me یعنی فرم والد frm هم یعنی فرم فرزند.
نباید این ها را باهم عوض کنید. در این صورت معلوم هست که نباید برنامه اجرا بشه.

در مورد وضیعت منواستریپ معمولا در اکثر موارد در فرم فرزند منواستریپ قرار نمیدهند شما منواستریپ را در فرم فرزند قرار داده ، خوب در ورد هم فرم فرزند هیچ منو استریپی ندارد اگر
داشته بود دقیقا مثل برنامه شما میشد.
معمولا اگر دقت کرده باشید در اکسس منواستریپ در فرم والد هست و با عوض شدن فرم فرزند در منو استریپ هم به تناسب نیاز آیتم هایی اضافه یا کم میشود. شما بگردید ببیند برنامه سراغ دارید که در فرم فرزند منواستریپ قرار داده باشند؟
:@(

ُسلام
1- گیر ندید، دیگه اینقدر بلدم که me در کدهای شما پدر و frm فرزنده، بلکه من قصد دارم در لود خود فرم فرزند یه همچین کاری انجام بدم
2- بازم گیر ندید، بنده منو را در فرم پدر گذاشتم و اینجوری شد و گرنه برام عجیب نبود.
3- اگه هم تو فرم فرزند بذاریم منوهاش با منوهای پدر ترکیب میشه (با یه نوع شیوه که تعیین میشه که چگونه ترکیب بشن)
4- این پاراگراف آخرتون هم نیاز به گشتن نداره، با مطلب 3 عرض کردم
5- حالا با این اوصاف لطفا شما یا دوستان دیگه جواب دهید.

linux
یک شنبه 14 اسفند 1384, 21:15 عصر
:@(

ُسلام
1- گیر ندید، دیگه اینقدر بلدم که me در کدهای شما پدر و frm فرزنده، بلکه من قصد دارم در لود خود فرم فرزند یه همچین کاری انجام بدم
2- بازم گیر ندید، بنده منو را در فرم پدر گذاشتم و اینجوری شد و گرنه برام عجیب نبود.
3- اگه هم تو فرم فرزند بذاریم منوهاش با منوهای پدر ترکیب میشه (با یه نوع شیوه که تعیین میشه که چگونه ترکیب بشن)
4- این پاراگراف آخرتون هم نیاز به گشتن نداره، با مطلب 3 عرض کردم
5- حالا با این اوصاف لطفا شما یا دوستان دیگه جواب دهید.

نیلوفر خانم
در مورد 1 باید یک روش دیگر استفاده کنید. ولی بهتر هست این مراحل را قبل از اینکه فرم فرزند را show کنید انجام بدهید.
در مورد 2 اگر منو را در فرم پدر قرار می دادید اینجوری نمیشد. خوب برنامه تون را نگاه کنید در صورت امکان اون قسمت از برنامه را بگذارید اینجا تا ما هم ببینم.
در مورد 3 شما درست میگید اینجوری هست.
در مورد 4 چرا بگردید خوب است.
ولی باز نگاه کنید من مطمن هستم که شما منو را در فرم فرزند گذاشتید نه والد.

niloufar
دوشنبه 15 اسفند 1384, 12:47 عصر
نیلوفر خانم
در مورد 1 باید یک روش دیگر استفاده کنید. ولی بهتر هست این مراحل را قبل از اینکه فرم فرزند را show کنید انجام بدهید.
در مورد 2 اگر منو را در فرم پدر قرار می دادید اینجوری نمیشد. خوب برنامه تون را نگاه کنید در صورت امکان اون قسمت از برنامه را بگذارید اینجا تا ما هم ببینم.
در مورد 3 شما درست میگید اینجوری هست.
در مورد 4 چرا بگردید خوب است.
ولی باز نگاه کنید من مطمن هستم که شما منو را در فرم فرزند گذاشتید نه والد.
سلام
به جان صدام که می خوام سر تو تنش نباشه، من منو را تو فرم MDI گذاشتم...........
خوب کاری داره مگه یه نمونه درست کنید و ببینید

linux
دوشنبه 15 اسفند 1384, 19:03 عصر
خوب منواستریپ را حذف کنید پروژه را دوباره کامپایل کنید بعد منواستریپ را اضافه کنید

niloufar
دوشنبه 15 اسفند 1384, 20:27 عصر
خوب منواستریپ را حذف کنید پروژه را دوباره کامپایل کنید بعد منواستریپ را اضافه کنید
سلام
1- ممنون از اینکه حوصله میکنید و جواب میدید
2- این کار رو هم کردم ولی نشد
3- ظاهرا این یه باگ مانند بود چون وقتی اصلا فرم mdi رو پاک کردم و دوباره ساختمش، دیگه این مشکل وجود نداشت
4- بازم ممنونم

vbapr2005
سه شنبه 16 اسفند 1384, 00:37 صبح
من قبلا به این مشکل برخورد کرده بودم امات حال نداشتم اینو تو سایت بپرسم. من هم مثل نیلوفر خانم زا منو های فارسی استفاده کرده بودم و فکر می کردم بخاطر فارسی بودنشون هست که این مشکل پیش میاد (چون فارسی از راست به چیه و دقیقا در سمت راست هم باید دکمه های Close و... قرار بگیرن.
اما، اما وقتی من منو ها رو از چپ به راست هم کردم دیدم بازم این مشکل وجود داره.
اون حرفی هم که لینوکس عزیز زدن رو (البته اگه درست کار می کرد) من نمیتونستم به عنوان راه حل کلی قبول کنم (فقط برای حل مشکل در مواقعی که واقعا آدم عجله داره قبول می کردم) چون نباید برای این کار راه حل به اون خفنی وجود داشته باشه چون اون یه کار بسیار معمولی و استاندارد هستش.

(البته دوستان ممکنه من تا چند روز کانکت نشم و به حرفایی که در جواب من می زنید، جواب ندم به هر حال ببخشید)

جون من یه راهی برای این کار پیدا کنید، آخه خیلی خیلی عجیب و غیر معموله. خودم هم باورم نمیشه آخه چطور ممکنه ویژوال بیسیک 2005 ......................؟؟؟؟!!!!

meh_secure
سه شنبه 16 اسفند 1384, 00:52 صبح
من نه تنها در اینجا بلکه در جاهای دیگه هم این مشکلات رو داشتم. اما وقتی Rebuild Solution می کنم مشکل برطرف میشه.