View Full Version : تغییر اندازه فرم
alizanganeh
جمعه 23 دی 1390, 23:31 عصر
سلام
style فرمم رو روی 3 گذاشتم
یعنی هر سه قابلیت پنجره ها رو داره (Exit,Restore و ...)
ولی با خاصیت max button دکمه ی mazimize رو غیر فعال کردم
اما هنوزم با تکان دادن حاشیه ی فرم میشه فرم رو تغییر اندازه داد
میخوام کاری کنم که نشه این کار رو کرد
ممنون
shahabbasic
جمعه 23 دی 1390, 23:56 عصر
راه منطقی اینه که خاصیت style فرم رو روی Fixed single بذاری و از خصوصیات فرم max button یا min button (هر کدوم رو که خواستی) True کنی اینجوری دیگه به قول خودت با تکان دادن حاشیه فرم تغییر اندازه نمیده
یک راه دیگه هم هست
در رخداد resize فرم بنویس :
me.height: اندازه موقع طراحی
me.width: اندازه موقع طراحی
sr2m72
شنبه 24 دی 1390, 00:25 صبح
سلام
style فرمم رو روی 3 گذاشتم
یعنی هر سه قابلیت پنجره ها رو داره (Exit,Restore و ...)
ولی با خاصیت max button دکمه ی mazimize رو غیر فعال کردم
اما هنوزم با تکان دادن حاشیه ی فرم میشه فرم رو تغییر اندازه داد
میخوام کاری کنم که نشه این کار رو کرد
ممنون
Styleرو روي دومي قرار بده بعد min button رو true كن.
pcdownload.bloghaa.com
شنبه 24 دی 1390, 01:35 صبح
برای اینکه اندازه فرمت تغییر نکنه.
1.این دوتا متغیر را تو جنرال تعریف کن :
dim w as single
dim h as single
2. این کد را در فرم لود بنویس :
w=me.width
h=me.height
3.این کد را هم داخل رویداد resize فرم بنویس :
if me.width>w or me.width<w or me.height>h or me.height<h then
me.enabled=false
me.width=w
me.height=h
me.enabled=true
end if
shahabbasic
شنبه 24 دی 1390, 11:33 صبح
برای اینکه اندازه فرمت تغییر نکنه.
1.این دوتا متغیر را تو جنرال تعریف کن :
dim w as single
dim h as single
2. این کد را در فرم لود بنویس :
w=me.width
h=me.height
3.این کد را هم داخل رویداد resize فرم بنویس :
if me.width>w or me.width<w or me.height>h or me.height<h then
me.enabled=false
me.width=w
me.height=h
me.enabled=true
end if
خب دوست عزیز منم بالا همین رو گفتم شما چرا بیخود کد رو زیاد میکنید؟
بجای اینکه بیاد متغیر تعریف کنه و این حرفا کافیه نگاه کنه ببینه موقع طراحی طول و عرض فرمش چقدره همونارو تو رخداد ریساز بنویسه دیگه این کارا چیه
SlowCode
شنبه 24 دی 1390, 15:11 عصر
خب دوست عزیز منم بالا همین رو گفتم شما چرا بیخود کد رو زیاد میکنید؟
بجای اینکه بیاد متغیر تعریف کنه و این حرفا کافیه نگاه کنه ببینه موقع طراحی طول و عرض فرمش چقدره همونارو تو رخداد ریساز بنویسه دیگه این کارا چیه
حالا چرا عصبانی میشید؟:گیج:
البته من کد ایشون رو امتحان نکردم ولی فکر کنم تفاوت بین کد ایشون و کد شما به این صورته:
کد شما: فرم resize میشه ولی شما بر میگردونین به حالت اول، که این حالت خوب نیست.
کد ایشون: امکان Resize فرم وجود نداره و حرفه ای تر و زیباتر به نظر میرسه.
shahabbasic
شنبه 24 دی 1390, 17:49 عصر
حالا چرا عصبانی میشید؟:گیج:
البته من کد ایشون رو امتحان نکردم ولی فکر کنم تفاوت بین کد ایشون و کد شما به این صورته:
کد شما: فرم resize میشه ولی شما بر میگردونین به حالت اول، که این حالت خوب نیست.
کد ایشون: امکان Resize فرم وجود نداره و حرفه ای تر و زیباتر به نظر میرسه.
خب فقط چون فرم غیر فعال میشه
من مشکلم سر این نیست مشکلم سر اینه که اصلا نیازی به تعریف متغیر نیست
Mr'Jamshidy
شنبه 24 دی 1390, 21:18 عصر
ای بابا بحث کردنتو چیه دیگه شما روشتون رو پیشنهاد بدید جوینده خودش بسته به سلیقه خودش یکیو استفاده میکنه ولی باید از همه تشکر کنه ها!
بخصوص من که میام یه اسپم میدم میرم
چون من مهمترین کار رو دارم انجام میدم
اینم کد پیشنهادی من
Private Declare Sub SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Declare Function EnableWindow Lib "user32" (ByVal hwnd As Long, ByVal fEnable As Long) As Long
Private Const HWND_DESKTOP = 0
Private Const HWND_NOTOPMOST = -2
Private Const HWND_TOP = 0
Private Const HWND_TOPMOST = -1
Private Const SWP_ASYNCWINDOWPOS = &H4000
Private Const SWP_DEFERERASE = &H2000
Private Const SWP_DRAWFRAME = &H20
Private Const SWP_FRAMECHANGED = &H20
Private Const SWP_HIDEWINDOW = &H80
Private Const SWP_NOACTIVATE = &H10
Private Const SWP_NOCOPYBITS = &H100
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOOWNERZORDER = &H200
Private Const SWP_NOREDRAW = &H8
Private Const SWP_NOREPOSITION = &H200
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOZORDER = &H4
Private Const SWP_SHOWWINDOW = &H40
Private Type RECT
iLeft As Long
iTop As Long
iRight As Long
iBottom As Long
End Type
Dim newRect As RECT
Private Sub Form_Load()
Dim nRect As RECT
GetWindowRect Me.hwnd, newRect
End Sub
Private Sub Form_Resize()
EnableWindow Me.hwnd, False
SetWindowPos Me.hwnd, 0, 0, 0, newRect.iRight, newRect.iBottom, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE
EnableWindow Me.hwnd, True
End Sub
pcdownload.bloghaa.com
شنبه 24 دی 1390, 23:27 عصر
خب دوست عزیز منم بالا همین رو گفتم شما چرا بیخود کد رو زیاد میکنید؟
بجای اینکه بیاد متغیر تعریف کنه و این حرفا کافیه نگاه کنه ببینه موقع طراحی طول و عرض فرمش چقدره همونارو تو رخداد ریساز بنویسه دیگه این کارا چیه
خب فقط چون فرم غیر فعال میشه
من مشکلم سر این نیست مشکلم سر اینه که اصلا نیازی به تعریف متغیر نیست
با روش خودت اینکارو بکن بعد سعی کن فرم را ریسایز کنی ببین برنامت شبیه تلویزیون سیاه سفید میشه یا نه.
حرفه ای ترش اینه که از سیستم عامل بخوایی تا برات حالت ریسایز را غیر فعال کنه عین روشی که Mr'Jamshidy گفتن.
اما ازون جایی که اینجانب مبتدی تشریف دارم گفتم یه کلکی به ویندوز بزنیم.دیگه خودتون ببخشید.
Mr'Jamshidy
یک شنبه 25 دی 1390, 00:29 صبح
با روش خودت اینکارو بکن بعد سعی کن فرم را ریسایز کنی ببین برنامت شبیه تلویزیون سیاه سفید میشه یا نه.
حرفه ای ترش اینه که از سیستم عامل بخوایی تا برات حالت ریسایز را غیر فعال کنه عین روشی که Mr'Jamshidy گفتن.
اما ازون جایی که اینجانب مبتدی تشریف دارم گفتم یه کلکی به ویندوز بزنیم.دیگه خودتون ببخشید.
روش روشه دوست عزیز فرقی نداره مهم اینه که همه مسیر ها به یک جا ختم میشن.
ولی در کل شما Border Style رو روی Fixed Single تنظیم کن (این بهترین حالته و از کد نویسی اضافه خبری نیست) بعد حالا Minimize یا Maximize، هرکدومو که لازم داری فعال کن
یک روش دیگه هم هست که با اون هندل منو فرم رو میگیری (منو سیستمی) بعد منو Size رو غیر فعال میکنی
در کل که بهترین روش آسون ترین و سریع ترین روشه چون همه روش ها آخرش به یک جا ختم میشه
shahabbasic
یک شنبه 25 دی 1390, 12:17 عصر
با روش خودت اینکارو بکن بعد سعی کن فرم را ریسایز کنی ببین برنامت شبیه تلویزیون سیاه سفید میشه یا نه.
حرفه ای ترش اینه که از سیستم عامل بخوایی تا برات حالت ریسایز را غیر فعال کنه عین روشی که Mr'Jamshidy گفتن.
اما ازون جایی که اینجانب مبتدی تشریف دارم گفتم یه کلکی به ویندوز بزنیم.دیگه خودتون ببخشید.
راه منطقی اینه که خاصیت style فرم رو روی Fixed single بذاری و از خصوصیات فرم max button یا min button (هر کدوم رو که خواستی) True کنی اینجوری دیگه به قول خودت با تکان دادن حاشیه فرم تغییر اندازه نمیده
یک راه دیگه هم هست
در رخداد resize فرم بنویس :
me.height: اندازه موقع طراحی
me.width: اندازه موقع طراحی
دوست عزیز به پست 2 نگاه کن اول اول اول اول گفتم راه منطقی چیه
اصلا شما مشکلت با من چیه؟
Mr'Jamshidy
یک شنبه 25 دی 1390, 17:25 عصر
دوست عزیز به پست 2 نگاه کن اول اول اول اول گفتم راه منطقی چیه
اصلا شما مشکلت با من چیه؟
چرا یک بحث کوچیک رو به یک مشکل بزرگ تبدیل میکنید؟
یکی اومده یک سوال پرسیده
هرکسی هم هرچیزی که بلد بوده ارایه داده
طرفی که سوال پرسیده به جوابش رسیده
موضوع هم تموم شده
پس چرا هی میگید فلانه و ....
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.