PDA

View Full Version : سوال: رویداد موس



atf1379
جمعه 09 اسفند 1398, 02:17 صبح
سلام
در نمونه ضمیمه اگر در داخل تکست باکس کلیک کنی اشاره گر موس 100 پیکسل به سمت چپ حرکت میکنه . مثلاً اگر درنزدیکی خط جهت دار تکست باکس کلیک کنی اشاره گر بر روی کمند باتن1 قرار گرفته و باعث انجام رویداد Command1_MouseDown که نتیجه صدور یک پیغام است میشود .
حال من میخواهم در هرجائی از تکست باکس کلیک کردم اشاره گر موس بر روی کمند باتن قرار بگیره و رویداد Command1_MouseDown را انجام بده
باتشکر

the king
جمعه 09 اسفند 1398, 13:20 عصر
سلام
در نمونه ضمیمه اگر در داخل تکست باکس کلیک کنی اشاره گر موس 100 پیکسل به سمت چپ حرکت میکنه . مثلاً اگر درنزدیکی خط جهت دار تکست باکس کلیک کنی اشاره گر بر روی کمند باتن1 قرار گرفته و باعث انجام رویداد Command1_MouseDown که نتیجه صدور یک پیغام است میشود .
حال من میخواهم در هرجائی از تکست باکس کلیک کردم اشاره گر موس بر روی کمند باتن قرار بگیره و رویداد Command1_MouseDown را انجام بده
باتشکر


Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Private Const MOUSEEVENTF_MIDDLEDOWN = &H20
Private Const MOUSEEVENTF_MIDDLEUP = &H40
Private Const MOUSEEVENTF_MOVE = &H1
Private Const MOUSEEVENTF_ABSOLUTE = &H8000
Private Const MOUSEEVENTF_RIGHTDOWN = &H8
Private Const MOUSEEVENTF_RIGHTUP = &H10

Private Declare Function SetCursorPos Lib "user32.dll" (ByVal X As Long, ByVal Y As Long) As Long
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
Private Declare Function GetWindowRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As RECT) As Long
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)

Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
MsgBox "Ok"
End Sub

Private Sub Text1_Click()
Dim r As RECT
GetWindowRect Command1.hwnd, r
SetCursorPos (r.Left + r.Right) \ 2, (r.Top + r.Bottom) \ 2
mouse_event MOUSEEVENTF_LEFTDOWN, 0&, 0&, 0, 0
End Sub

atf1379
جمعه 09 اسفند 1398, 19:53 عصر
احسنت :تشویق::تشویق::تشویق:

vbhamed
جمعه 16 اسفند 1398, 06:24 صبح
سلام
در نمونه ضمیمه اگر در داخل تکست باکس کلیک کنی اشاره گر موس 100 پیکسل به سمت چپ حرکت میکنه . مثلاً اگر درنزدیکی خط جهت دار تکست باکس کلیک کنی اشاره گر بر روی کمند باتن1 قرار گرفته و باعث انجام رویداد Command1_MouseDown که نتیجه صدور یک پیغام است میشود .
حال من میخواهم در هرجائی از تکست باکس کلیک کردم اشاره گر موس بر روی کمند باتن قرار بگیره و رویداد Command1_MouseDown را انجام بده
باتشکر

سلام
حالا حتما میخواین ماوس بره اونجا یا هدفتون فشرده شدن دکمه است ؟

atf1379
شنبه 17 اسفند 1398, 20:57 عصر
سلام
حالا حتما میخواین ماوس بره اونجا یا هدفتون فشرده شدن دکمه است ؟

سلام استاد !
هردو
رفتن به آنجا و فشرده شدن دکمه ، که با اصلاح کدها توسط دوستمون مشکل برطرف شد.

atf1379
جمعه 18 مهر 1399, 15:46 عصر
سلام
با استفاده از کدهای جناب the king (https://barnamenevis.org/member.php?259237-the-king) میخواهم در هر کجای تکست باکس کلیک کردم اشاره گر در آخر تکست باکس (منتها الیه سمت چپ) و در نوک پیکان قرار گیرد
ضمناً اندازه طول و عرض تکست باکس متغییر است .

هدفم از اینکار اینست که باکلیک بر روی تکست باکس فرمی در منتها الیه سمت چپ تکست باکس باز شود بطوریکه از بالا فرم و تکست باکس همسطح شوند.(چیزی شبیه تصویر ضمیمه)

شاید با کد دیگری این کار انجام شود ولی من احساس کردم شاید با استفاده از کدهای بالا بشود اینکار رو انجام داد

با تشکر

the king
جمعه 18 مهر 1399, 20:01 عصر
سلام
با استفاده از کدهای جناب the king (https://barnamenevis.org/member.php?259237-the-king) میخواهم در هر کجای تکست باکس کلیک کردم اشاره گر در آخر تکست باکس (منتها الیه سمت چپ) و در نوک پیکان قرار گیرد
ضمناً اندازه طول و عرض تکست باکس متغییر است .

هدفم از اینکار اینست که باکلیک بر روی تکست باکس فرمی در منتها الیه سمت چپ تکست باکس باز شود بطوریکه از بالا فرم و تکست باکس همسطح شوند.(چیزی شبیه تصویر ضمیمه)

شاید با کد دیگری این کار انجام شود ولی من احساس کردم شاید با استفاده از کدهای بالا بشود اینکار رو انجام داد

با تشکر

Private Sub Text1_Click()
Dim r As RECT
GetWindowRect Text1.hwnd, r
SetCursorPos (r.Left + r.Right) \ 2, (r.Top + r.Bottom) \ 2
Form3.Move ScaleX(r.Left, vbPixels, vbTwips) - Form3.Width, ScaleY(r.Top, vbPixels, vbTwips)
Form3.Show
End Sub

atf1379
شنبه 19 مهر 1399, 00:17 صبح
Private Sub Text1_Click()
Dim r As RECT
GetWindowRect Text1.hwnd, r
SetCursorPos (r.Left + r.Right) \ 2, (r.Top + r.Bottom) \ 2
Form3.Move ScaleX(r.Left, vbPixels, vbTwips) - Form3.Width, ScaleY(r.Top, vbPixels, vbTwips)
Form3.Show
End Sub


احسنت :تشویق::تشویق::تشویق:

vbhamed
دوشنبه 21 مهر 1399, 09:00 صبح
سلام
در نمونه ضمیمه اگر در داخل تکست باکس کلیک کنی اشاره گر موس 100 پیکسل به سمت چپ حرکت میکنه . مثلاً اگر درنزدیکی خط جهت دار تکست باکس کلیک کنی اشاره گر بر روی کمند باتن1 قرار گرفته و باعث انجام رویداد Command1_MouseDown که نتیجه صدور یک پیغام است میشود .
حال من میخواهم در هرجائی از تکست باکس کلیک کردم اشاره گر موس بر روی کمند باتن قرار بگیره و رویداد Command1_MouseDown را انجام بده
باتشکر


خب اگر هدف فشردن دکمه است اصلا نیازی به این کارها نیست
شما میتونید خود رویداد Click دکمه رو فراخونی کنید مثلا اگر اسمش cmd1 باشه هر جای برنامه بنویسید cmd1_Click یا بنویسید
cmd1_mouseDown ...
پارامترهاش رو هم به دلخواه بدید

atf1379
شنبه 17 آبان 1399, 17:56 عصر
Private Sub Text1_Click()
Dim r As RECT
GetWindowRect Text1.hwnd, r
SetCursorPos (r.Left + r.Right) \ 2, (r.Top + r.Bottom) \ 2
Form3.Move ScaleX(r.Left, vbPixels, vbTwips) - Form3.Width, ScaleY(r.Top, vbPixels, vbTwips)
Form3.Show
End Sub


سلام
من میخواهم این کد رو در محیط اکسس بکار ببرم ولی در اکسس خصوصیت ScaleX و Scaley وجود ندارد . خواستم خواهش کنم یکی از دوستان در مورد کد زیر توضیحی بفرماید که دقیقاً این کد چه کاربردی دارد



ScaleX(r.Left, vbPixels, vbTwips)

ScaleY(r.Top, vbPixels, vbTwips)


و آیا امکان دارد این کد رو بنحو دیگری تبدیل کرد که نیاز به ScaleX و ScaleX نداشته باشد ؟
ممنون