PDA

View Full Version : حرفه ای: استفاده از Form Border های جدید



M.T.P
یک شنبه 21 فروردین 1390, 16:14 عصر
چطور میشه Border فرم رو مثل نرم افزارهای جدید (Google chrome) ارتفاعش رو افزایش داد و یا اینکه مثل قاب پنجره ساعت ویندوز 7 بدون عنوان و کلید دید؟ :متفکر:

محسن شامحمدی
دوشنبه 22 فروردین 1390, 10:21 صبح
چطور میشه Border فرم رو مثل نرم افزارهای جدید (Google chrome) ارتفاعش رو افزایش داد و یا اینکه مثل قاب پنجره ساعت ویندوز 7 بدون عنوان و کلید دید؟ :متفکر:
این Border ها ، حاشیه های استاندارد ویندوز نیست.
شما باید این طور Border ها رو خودت طراحی کنی و بعد واسه اینکه کاملا شبیه TitleBar های ویندوز بشه می تونی روش کد بنویسی که با درگ کردنش کل پنجره رو جابحا کنه

M.T.P
دوشنبه 22 فروردین 1390, 12:41 عصر
سلام
درسته ، اما چطور میشه Border ساخته شده خودمون رو حالت شیشه ای بهش بدیم سوای از خود فرم؟! :متفکر: فکر نکنم تو تالار vb6 از دوستان کسی بتونه این کار رو انجام بده. :بامزه: ، اما نگید نمیشه. :چشمک:
چون حاشیه های Google Chrome این خصوصیت رو داره و تو ویندوز 7 شیشه ای میشه.
پنجره های ویندوز ویستا و 7 دارن از نسل جدید این حاشیه ها استفاده میکنند چون کلیدهای Back و Forward دارن و ... اما اگه اینطوره چرا در فرم های نسخه های جدید Visual Studio این موضوع به چشم نمی خوره. :افسرده:

akbarg64
دوشنبه 22 فروردین 1390, 14:44 عصر
سلام.دقیقا نفهمیدم منظورتون چیه.خودم حدسی این نمونه ها رو گذاشتم.

M.T.P
دوشنبه 22 فروردین 1390, 19:21 عصر
ممنون از نمونه های جالبی که گذاشتید.
ببینید فرم در حالت Resizeable و بدون عنوان و ControlBox به شکل زیر درمیاد(یعنی همون شکل فرم ساعت ویندوز 7 که عرض کردم):
http://persianloord.persiangig.com/image/1.jpg
http://persianloord.persiangig.com/image/2.jpg
اما با این تفاوت که فرم من قابلیت تغییر اندازه داره اما فرم ساعت ویندوز 7 قابلیت تغییر سایز رو نداره! :متفکر:
میخوام فرمم همین شکلی باشه اما قابلیت تغییر سایز رو ازش بگیرم.
ممنون.

akbarg64
دوشنبه 22 فروردین 1390, 20:27 عصر
میشه فرمتون رو بزارید؟؟؟؟هدفتون از اون کار چی هست؟؟؟؟؟؟

M.T.P
دوشنبه 22 فروردین 1390, 21:18 عصر
فرم من فرم خاصی نیست.
اگه ویندوزتون 7 هست و قابلیت Aero فعال هست یه پروژه جدید بسازید.
خصوصیات زیر رو تو فرم اعمال کنید:

1. ControlBox رو False کن.
2. Caption رو هم پاک کنید.

بعد Start بزنید.

خب حالا همین Border شیشه ای اطراف فرم رو من میخوام داشته باشم منهای قابلیت Resize فرم.(مثل پنجره ساعت ویندوز که عکسش بالا هست.)

akbarg64
دوشنبه 22 فروردین 1390, 21:52 عصر
ویندوزم سون هست اما غیر فعاله.فعال نمیشه .اما خب چرا از این کد استفاده نمی کنید؟؟؟؟؟ حالا کی میتونه تغییر اندازه بده؟؟؟؟؟؟؟
Private Sub Form_Resize()
Me.WindowState = 0 'Normal
Me.Width = 8355
Me.Height = 6030
End Sub

حمید محمودی
چهارشنبه 24 فروردین 1390, 01:31 صبح
خب حالا همین Border شیشه ای اطراف فرم رو من میخوام داشته باشم منهای قابلیت Resize فرم.(مثل پنجره ساعت ویندوز که عکسش بالا هست.)


سلام،

میتونید خیلی راحت SysMenu مربوط به قسمت Size رو بردارید تا فرم مورد نظر نتونه، تغییر اندازه بده، همین!


'Code by H.Mahmoudi

Public Const MF_BYPOSITION = &H400&
Public Declare Function GetSystemMenu Lib "USER32" (ByVal hWnd As Long, ByVal bRevert As Long) As Long


Public Sub DelSystemMenu(frm As Form, _
remove_restore As Boolean, _
remove_move As Boolean, _
remove_size As Boolean, _
remove_minimize As Boolean, _
remove_maximize As Boolean, _
remove_seperator As Boolean, _
remove_close As Boolean)

Dim hMenu As Long

' Get the form's system menu handle.
hMenu = GetSystemMenu(frm.hWnd, False)

If remove_close Then DeleteMenu hMenu, 6, MF_BYPOSITION
If remove_seperator Then DeleteMenu hMenu, 5, MF_BYPOSITION
If remove_maximize Then DeleteMenu hMenu, 4, MF_BYPOSITION
If remove_minimize Then DeleteMenu hMenu, 3, MF_BYPOSITION
If remove_size Then DeleteMenu hMenu, 2, MF_BYPOSITION
If remove_move Then DeleteMenu hMenu, 1, MF_BYPOSITION
If remove_restore Then DeleteMenu hMenu, 0, MF_BYPOSITION
End Sub

M.T.P
چهارشنبه 24 فروردین 1390, 11:16 صبح
سلام.
با تشکر
تابع DeleteMenu رو کم داشت بهش اضافه کردم.
اما به هر حال این روال موقعی که فرم Titlebar داره عمل میکنه!! متاسفانه جواب نداد. :متفکر:
شما تست کردین؟

حمید محمودی
چهارشنبه 24 فروردین 1390, 20:22 عصر
شما تست کردین؟

نه، چون خیلی وقت میشه با این زبان برنامه نویسی نکرده بودم. الان هم فقط حدث زدم با استفاده از حذف آیتم Size در SysMenu مشکل مورد نظر حل میشه.

اینجا (http://www.vbaccelerator.com/codelib/ssubtmr/ctrlres.htm)رو نگاه کنید، در این مثال میشه وقتی روی Border کلیک میشه (برای ریسایز) اون رو تشخیص داد. متاسفانه بنده خودم وقت نکردم ببنیم میشه موردی که مدنظرتون هست رو از توش در اورد یا نه. شما ببنید چی میشه...

موفق باشید.