PDA

View Full Version : چسباندن فرم به لبه های صفحه نمایش



mehrdotnet
سه شنبه 08 شهریور 1384, 20:39 عصر
سلام به همه دوستان و اساتید محترم
من یک پروژه نوشتم که فرم اصلی اون شبیه یک ToolBar از یک نوار شامل یکسری دکمه تشکیل شده. حالا می خوام کاری کنم که بتونه با انتخاب کاربر به لبه های صفحه نمایش بچسبه (بالا - پایین - چپ - راست)
البته می خوام موارد زیر هم توش رعایت بشه :
1- اگه کاربر رزولوشن مانیتورش رو تغییر داد نسبت به اون عکس العمل نشون بده و کوچک تر یا بزرگتر از لبه ای که بهش چسبیده نشه و لبه ای که بهش چسبیده رو کاملا بپوشونه
2- محل و پهنای TaskBar در نظر گرفته بشه و با تغییر پهنای اون اگه فرم به همان لبه ای که TaskBar قرار داده چسبیده تغییر محل بده و به TaskBar بچسبه
3- اگه هنگام چسبیدن به لبه ها روی آیکن های Desktop قرار گرفت آیکن ها را تغییر محل بده تا همه شون دیده بشن
لطفاً هر کس کوچک ترین اطلاعی راجع به هر قسمت از سوال من داره لطف کنه و بگه چون بدجوری توش گیر افتادم.
با تشکر از همگی

mehrdotnet
چهارشنبه 09 شهریور 1384, 16:24 عصر
آقا چرا هیشکی به من جواب نمی ده؟:افسرده:
یعنی سوالم اینقدر الکیه که کسی بهش محل نمیده یا اینکه ...؟؟؟؟؟؟!!

مجتبی کریمی
چهارشنبه 09 شهریور 1384, 16:43 عصر
آقا ما دوست داریم کمک کنیم
اما خوب معلوماتمون نمی رسه
.... :افسرده:

mehrdotnet
چهارشنبه 09 شهریور 1384, 18:48 عصر
پس اگه موضوع خفنه اساتید به داد برسند !!!:گریه:

Hamedm
پنج شنبه 10 شهریور 1384, 20:20 عصر
سلام

قبلا یک کد VB داشتم که مشابه کار شما انجام میداد. اگه میخواهید Upload کنم.

در پناه حق موفق باشید و پرتوان

titbasoft
پنج شنبه 10 شهریور 1384, 21:19 عصر
فکر کنم به چنین چیزی احتیاج دارید:
برای کار کردن باهاش 4 تا دکمه به نام های cmdTop , cmdBotton , cmdLeft , cmdRight روی یک فرم بزارید و کل کد زیر رو در قسمت کد فرمتون کپی کنید. یه کم کار داره (botton و right اش) . در اولین فرصت تکمیلش می کنم.
در ضمن با تغیر resolution هم تغیر سایز می ده! :چشمک:


Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
If m.Msg = 126 Or m.Msg = 26 Then
Form1_DockChanged(New Object, New System.EventArgs)
End If
MyBase.WndProc(m)


Private Sub cmd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdLeft.Click, cmdRight.Click, cmdTop.Click, cmdBottom.Click
Select Case sender.name
Case "cmdTop"
Me.Dock = DockStyle.Top
Case "cmdLeft"
Me.Dock = DockStyle.Left
Case "cmdBottom"
Me.Dock = DockStyle.Bottom
Case "cmdRight"
Me.Dock = DockStyle.Right
End Select

End Sub

Private Sub Form1_DockChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.DockChanged
Dim w As Integer = SystemInformation.WorkingArea.Width
Dim h As Integer = SystemInformation.WorkingArea.Height
Dim x As Integer = SystemInformation.WorkingArea.X
Dim y As Integer = SystemInformation.WorkingArea.Y
Select Case Me.Dock
Case DockStyle.Top
Me.Width = w
Me.Height = 100
Me.Top = y
Me.Left = x
Case DockStyle.Left
Me.Width = 100
Me.Height = h
Me.Top = y
Me.Left = x
Case DockStyle.Bottom
Me.Width = w
Me.Height = 100
Me.Top = h - y - 100
Me.Left = x
Case DockStyle.Right
Me.Width = 100
Me.Height = h
Me.Top = y
Me.Left = w - x - 100
End Sub

SYSMAN
جمعه 11 شهریور 1384, 01:56 صبح
خوب این در حالته کلی درست ولی اگه یک کاربری TaskBar رو به یک سمت دیگه چسبانده بود چطور؟ یا اگه چند تا آیکون رو سمت راست دسکتاپ قرار داده بود چطور؟ (آیکون سطل بازیانی ویندوز XP به طور پیش فرض سمت راست و پائین دسکتاپ قرار داره)

حامد مصافی
جمعه 11 شهریور 1384, 11:16 صبح
سلام
این مثال که من نوشتم محل Task Bar رو هم در نظر می گیره

titbasoft
جمعه 11 شهریور 1384, 11:25 صبح
کد اولم رو یه تغیر کوچیک دادم. به 2 علت:
1) handle کردن تغیرات مکان taskbar در زمان اجرا
2) در نظر گرفتن اندازه taskbar

حامد مصافی
جمعه 11 شهریور 1384, 14:27 عصر
عالیه جناب titbasoft:تشویق:

titbasoft
جمعه 11 شهریور 1384, 14:44 عصر
عالیه جناب titbasoft شما لطف دارید ولی هنوز مشکل داره. مثلا با auto hide بودن task bar :افسرده:

حامد مصافی
جمعه 11 شهریور 1384, 15:34 عصر
سلام

تشخیص این موضوع راحته فقط باید کمی از api استفاده کنیم

SYSMAN
جمعه 11 شهریور 1384, 17:25 عصر
جالبه آقای BlavkDal ولی فقط وقتی Taskbar پائین هست تشخیص می ده وقتی هم TaskBar پائین باشه و تغییر اندازه بدیم و دوباره برگردونیم سره جاش فرم همون جا می مونه ولی در مجموع جالب بود

mehrdotnet
شنبه 12 شهریور 1384, 09:16 صبح
از همه دوستانی که صمیمانه وقت گذاشتن و اهمیت دادن بسیار متشکرم.
اگه اون چندتا مشکل هم رفع بشه دیگه عالیه.