PDA

View Full Version : سوال: Move كردن اشياء موجود روي فرم



m_zargarnia
شنبه 21 اسفند 1389, 10:55 صبح
سلام
من با استفاده از قطعه كد ذيل كليه اشياء را ميتونم Move كنم بغير از Label . لطفا راهنمائي كنيد ."اشيائي كه خصوصيت Hwnd داشته باشه"


Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Any) As Long
Private Declare Function ReleaseCapture Lib "user32.dll" () As Long
Private Sub Toolbar1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
End Sub

Private Sub Form_Load()
Text1.BorderStyle = 0
Text1.BackColor = -2147483643
End Sub

Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lngReturnValue As Long

If Button = 1 Then
Call ReleaseCapture
lngReturnValue = SendMessage(Me.Text1.hWnd, &HA1, 2, 0&)
End If

End Sub

javadt
شنبه 21 اسفند 1389, 12:39 عصر
Dim tmpX As Integer
Dim tmpY As Integer
Dim Down As Byte


Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
tmpX = X
tmpY = Y
Down = 1
End Sub

Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Down = 1 Then
Label1.Left = Label1.Left + (X - tmpX)
Label1.Top = Label1.Top + (Y - tmpY)
End If
End Sub

Private Sub Label1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Down = 0
End Sub

ali.rezaei7
شنبه 21 اسفند 1389, 12:42 عصر
سلام کنترل لیبل جز پنجره ها به شمار نمیاد و هیچ هندلی ندارد. در نتیجه تابع sendmessage درمورد این کنترل هیچ کاربردی نداره.
البته می تونید لیبل رو داخل کنترلی مثل picture قرار یدید تا با حرکت دادن پیکچر، لییل هم حرکت کنه.
یا اینکه از روش آقا جواد استفاده کنید.
موفق باشید.

محسن واژدی
شنبه 21 اسفند 1389, 12:44 عصر
سلام
اگر منظورتون تنها حرکت دادن اشیاء موجود در فرم برنامه است؛ که برای هر شی یک خاصیت Move وجود دارد که میتوانید آنرا در خصوصیات شی مورد نظر ببینید، اما اگر میخواهید اشیاء سایر پنجره های فعال را حرکت دهید باید ابتدا هندل آنها را بدست آورید

موفق باشید

m_zargarnia
شنبه 21 اسفند 1389, 13:18 عصر
آقا جواد دستت درست OK بود .
دوستان ببينيد من دارم برنامه صدور چك مينويسم . ميخوام كاربر بتونه تصوير چك رو انتخاب كنه بعدمحل قرار گيري آيتم هاي اطلاعاتي چك رو طبق تصوير چك (فرمت چك) تعيين كنه و نهايتاً موقعيت هر آيتم توي بانك ذخيره بشه . آيا ميشه براساس موقعيت هر آيتمي كه كاربر تعيين ميكنه چك رو چاپ كرد و ديگه احتياج به طراحي فرمت چك توي كريستال رپورت نباشه .
پيشنهاد شما چيه ؟
من چنين برنامه صدور چكي رو ديدم . كه با جاوا نوشته شده بود .

m_zargarnia
شنبه 21 اسفند 1389, 13:20 عصر
نه فقط اشياء موجود در فرم برنامه .

محسن واژدی
شنبه 21 اسفند 1389, 13:32 عصر
دوستان ببينيد من دارم برنامه صدور چك مينويسم . ميخوام كاربر بتونه تصوير چك رو انتخاب كنه بعدمحل قرار گيري آيتم هاي اطلاعاتي چك رو طبق تصوير چك (فرمت چك) تعيين كنه و نهايتاً موقعيت هر آيتم توي بانك ذخيره بشه . آيا ميشه براساس موقعيت هر آيتمي كه كاربر تعيين ميكنه چك رو چاپ كرد و ديگه احتياج به طراحي فرمت چك توي كريستال رپورت نباشه .
پيشنهاد شما چيه ؟
من چنين برنامه صدور چكي رو ديدم . كه با جاوا نوشته شده بود .

برای اینکه کاربر قادر به تعیین محل قرار گیری عناصر در زمان اجرا باشد باید خاصیت DragMode را در زمان اجرا بر روی Automatic که دارای مقدار 1 است قرار دهید
همچنین برای اینکه خاصیت DragMode تمام اشیاء در زمان اجرا یکبار بر روی اتوماتیک و بار دیگر به حالت اول باز گردد و مجبور نباشید نام تکتک اشیاء را در روال ذکر کنید، پیشنهاد میکنم از حلقه For Each استفاده کنید

موفق باشید