PDA

View Full Version : سوال: چرا وقتی بوردراستیل رو برمیدارم دیگه نمیشه برنامه رو تکون داد؟؟؟



reza.k1375
پنج شنبه 31 شهریور 1390, 12:05 عصر
چرا وقتی بوردراستیل رو برمیدارم دیگه نمیشه برنامه رو تکون داد؟؟؟ منظورم همون نوار آبی رنگه که خروج و... داخل هست. من اون رو برمیدارم ولی دیگه نمیشه برنامه رو با موس تکون داد. هم چنین مثلا الان من که توی mozila firefox هستم پنجره اون در قسمت پایین کنار start هست ولی وقتی که بوردر استایل برنامه رو که با ویژوال بیسیک ساختم رو برمیدارم دیگه پایین صفحه کنار start هم نوشنش نمیده.:گریه::گریه:

MohammadGh2011
پنج شنبه 31 شهریور 1390, 12:13 عصر
سلام عليکم

بعد از Borderstyle رو که 0-none گذاشتيد
خاصيت Show in taskbar را برابر با True کنيد


موفق باشيد

quiet_programmer
پنج شنبه 31 شهریور 1390, 12:34 عصر
با سلام.

خوب کارش همینه دیگه. وقتی این خاصیت رو هیچ انتخاب کنی این اتفاق برای فرمت میوفته. چرا نداره!
برای اینکه فرمت قابلیت حرکت رو داشته یا نداشته باشه یا قابلیت ریسایز شدن داشته یا نداشته باشه یا قابلیت نمایش تو تسکبار داشته یا نداشته باشه و ... شما بوردراستایل رو رو با مقادیر مختلف مقدار دهی میکنی.

none: قابلیت جابجایی، ریسایز شدن و نمایش تو تسکبار رو نداره و هیچ کدوم از دکمه های کنترلی فرم رو نداره.
Fixed Single: قابلیت ریسایز شدن رو نداره. تو تسکبار نشون داده میشه و متونی فرم رو جابجا کنی. از دکمه های کنترلی فقط دکمه کلوز رو داره.
Sizable: فرم معمولی.
Fixed dialog: مشابه Fixed Single فقط تو تسک بار نشون داده نمیشه. مثل همون فرمهای دیالوگ
Sizable tool Window: قابلیت ریسایز شدن داره. ولی تو تسکبار نشونش نمیده.
Fixed Tool Window: قابلیت ریسایز شدن و نمایش تو تسکبار رو نداره.

البته میشه با این مقادیر و خاصیت minbutton و maxbutton فرمهایی با قابلیت های ترکیبی ایجاد کرد.
مثلا:
border style:Fixed Single
MinButton: True
باعث میشه شما یه فرم بدون قابلیت ریسایز شدن داشته باشین و لی بتونین مینیمایزش کنین. یا اگه MaxButton رو هم True کنید میتونین فرم رو ماکزی مایز هم بکنین
البته رو بعضی از مقادیر Border Style خاصیت های MinButton و MaxButton کار نمیکنه.

یاحق.
موفق باشید

returnx
پنج شنبه 31 شهریور 1390, 13:48 عصر
برای حرکت دادن فرم شما میتونید با این کد ها اینکار رو انجام بدید:
MouseDown:

If Button = 1 Then
old_x = X
olx_y = Y
clk = True
End If
MouseMove:

If Button = 1 And clk = True Then 'Drag The Form
Me.MousePointer = 15
Me.Move Me.Left + X - old_x, Me.Top + Y - old_y
End If
MouseUp:

Me.MousePointer = 0
clk = False

setroyd
پنج شنبه 31 شهریور 1390, 13:57 عصر
Dim xx, yy
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
xx = X
yy = Y
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Me.Left = Me.Left + X - xx
Me.Top = Me.Top + Y - yy
End If
End Sub
به این شکل میشه فرم رو تکون بدی .

vbhamed
پنج شنبه 31 شهریور 1390, 18:45 عصر
سلام

با اجازه از دوستان ديگه
اينم يك راه استاندارد با استفاده از API
ضمنا خوبي اين روش اينه كه مي‌تونيد ساير اشياء رو هم حركت بديد، مثلا يك تصوير يا دكمه يا ...
فقط كافيه هندل اون شيء رو بهش بديد
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

On Error Resume Next

If Button = vbKeyLButton Then
Call ReleaseCapture
SendMessage Me.hwnd, &HA1, 2, 0&
End If

End Sub

Black_Strom
دوشنبه 04 مهر 1390, 00:18 صبح
release capture , ... که دوستمون گذاشتن را من قبلا استفاده میکردم کد خوبیه بهتره از همین کد استفاده نمایید البته دستور sendmessage هم میتونه به شکل دیگه استفاده بشه بدون نیاز به release captiure که در اون صورت باید از دستوراتی مانند getwindowslong استفاده کنید
اگر خواستی مثال عملیش را ببینی مسنجر زیر را دانلود کن ببین چطوری فرم با نگه داشتن ماوس حرکت می کنه در حلیکه فرم کلا skin یا پوسته داده شده است .