PDA

View Full Version : حرفه ای: جلوگیزی از ماکسیمایز شدن فرم



Hashemvp
دوشنبه 11 دی 1391, 08:21 صبح
سلام خدمت به همه ی دوستان

یک فرم رو خاصیت BorderStyle=fixed dialog گذاشتم که نشه resize اش کرد.

ولی دیدم وقتی با Task manager ویندوز روی برنامه ام ک در حال اجرا هست و کلیک راست میکنم و روی گزینه ی

maximize کلیک میکنم فرم تمام صفحه میشه.

http://upload.tehran98.com/img1/ymamfgb59fxvousgonow.jpg


کسی از دوستان میدونه چطور باید جلوگیری کرد از همچنین کاری که فرم از اصلا تحت هیچ شرایطی resize نشه؟

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

http://upload.tehran98.com/img1/8x6f3wom48hbkgr57001.jpg
ممنون میشم راهنماییم کنید
موفق باشید

salamu
دوشنبه 11 دی 1391, 10:24 صبح
توی همون resize بنویس ولی قبلش یه On error resume next بنویس.مثلاً اگه طول فرمت 1000 و عرضش هم 1000 باشه،از دستور زیر توی form_resize اسفاده کن.و میتونی جای 1000 طول و عرض برنامه ی خودت رو بدی:

on error resume next
me.height=1000
me.width=1000

البته اگه اینجوری بنویسی،دیگه لازم نیست بوردر استایل رو روی fixed single بذاری و در حالت معمولی هم درست کار میکنه.

Hashemvp
دوشنبه 11 دی 1391, 14:33 عصر
دوست عزیز salamu (http://barnamenevis.org/member.php?268268-salamu) ممنون از پاسختون ولی این راه حلی ک شما گفتید برای این کار مفید نیست
چون من در ادامه سوالم گفتم ک از طریق task manager ویندوز میشه فرم رو ماکسیمایز کرد و من نمیخوام این عمل توسط task manager و برنامه هایی از این قبیل عمل ماکسیمایز انجام بشه.
این راه حلی ک شما گفتی فقط باعث میشه خطا رو نشون نده ولی اصل ماجرا ک ماکسیمایز شدنه انجام میشه.

ممنون از جواب

ممنون میشم دوستان دیگر هم بیان و جواب بدن
موفق باشید

M.T.P
دوشنبه 11 دی 1391, 17:15 عصر
این کد احتمالا مشکل رو حل می کنه...

Private Sub Form_Resize()
Me.WindowState = vbNormal
End Sub

Hashemvp
دوشنبه 11 دی 1391, 17:58 عصر
ممنون فکرشو نمیکردم اصلا.
نکته جالبی بود ممنون.
بعد اگه نخوام مینیمایز هم نشه اون وقت چیکار باید بکنم؟

aliasadi1
دوشنبه 11 دی 1391, 18:05 عصر
با سلام کمکم کنید کدی که داده بودبد error می دهد object requre خواهش می کنم کمک کنید

salamu
دوشنبه 11 دی 1391, 19:25 عصر
اگه کند شدن برنامه تان مشکل جدی نیست یه تایمر با اینتر ول یک بزار رو فرم و دستور زیر رو بنویس:

Me.WindowState = vbNormal

البته اصلاً این کار لازم نیست و دستور جناب M.P.T هم دقیقاً همین کار رو میکنه و نه مینیمایز و نه ماکسی مایز نمیشه.ولی میتونید خاصیت های minbutton و maxbutton رو هم فالس کنید به جای اینکه بوردر استایل رو تغییر بدید.چون استایل معمولی خیلی قشنگتره.
اگه می خوای بسته هم نشه تو آنلود بنویس:

cancel=true

هر جور دیگه ای خواستی قفل کنی بگو.

Hashemvp
دوشنبه 11 دی 1391, 19:40 عصر
ممنون از جوابت ولی این کار هایی ک میگی درست انجام مبشه ولی زمانیکه دکمه ها رو حذف کنی ولی وقتی از توی task manager بخوای مینیمایز کنی این کارهای فایده نداره مینیمایز میشه.

ممنون از جوابت

salamu
دوشنبه 11 دی 1391, 20:32 عصر
اولش که گفتم براقفل مینیمایز و ماکسیمایز چی کار کنی.دکمه هار هم گفتم برا اینکه ظاهر برنامه ات مثلاً وقتی موس رو برا ریسایز کردن می بری آیکون موس عوض شه ولی اگه بردر رو تغییر بدی آیکون موس عوض نمیشه.اگه بخوای حتی میتونی ماکزیمم و مینیمم برا ریسایز فرمت بزاری یعنی از یه حدی بزرگ تر و از یه حدی کوچکتر نشه،یا می تونی کلاً قفلش کنی.

Hashemvp
دوشنبه 11 دی 1391, 20:38 عصر
دوست عزیز ممنون از جوابت
متوجه منظورت میشه ولی مثل اینکه درست متوجه منظور من نشدی.

شما ی برنامه با این تنظیم هایی ک فرمودی درست کن و اجرا کن بعد task manager ویندوز رو اجرا کن و برنامه خودتو انتخاب کن و کلیک راست کن و بعد بروی مینیمایز کلیک کن
اونوقت میبینی هرچی کد نوشتی هیچ تاثیری نداره و فرم مینیمایز میشه.

salamu
دوشنبه 11 دی 1391, 22:20 عصر
امتحان کردم.درست کار میکنه و بلافاصله بعد از مینیمایز شدن به حالت عادی برمیگرده.
این هم ضمیمه شده اش(نه مینیمایز نه ماکسی مایز):

M.T.P
دوشنبه 11 دی 1391, 23:01 عصر
بعد اگه نخوام مینیمایز هم نشه اون وقت چیکار باید بکنم؟

دو راه هست...
اولی با تایمر که دوستمون salamu (http://barnamenevis.org/member.php?268268-salamu) بهش اشاره کردند
دومی هوک کردن و بررسی پیام های ویندوز که به فرم ارسال میشه

Hashemvp
سه شنبه 12 دی 1391, 14:24 عصر
دوست عزیز salamu (http://barnamenevis.org/member.php?268268-salamu) ممنون از تیکه کدی ک در اختیارم گذاشتی و زحمت کشیدی.

ولی تایمر از نظر من گزینه ی خوبی نیست به 2 دلیل
1- سرعت سیستم رو برای محاسبه های غیر ضروری میگیره
2-اگه دقت کرده باشید برای یک لحظه عمل مینیمایز و .... انجام میشه و دوباره برمیگرده ب حالتی ک تعریف کردیم همین کد شما رو هم تست کردم و اینو میگم.


دوست عزیز M.T.P (http://barnamenevis.org/member.php?132020-M.T.P) اگه امکانش هست تیکه کد ک با استفاده از هوک کردن هست رو در اختیارم بذاری ممنونت میشم.


ممنون از جواب هاتون
موفق باشید