שאלה

שאלה

מישהו יודע איך ניתן לגרום כשבלחיצה על מקש מסוים (נניח רווח) תתבצע הפעולה כאילו לחצת עם העכבר. אני יודע שזו הפונקציה mouse_event אבל אין לי מושג איך משתמשים בה. מי שיוכל לעזור לי - יבורך.
 

mitke

New member
די פשוט

ב event של key_down אתה בודק אם המקש שנלחץ הוא רווח. אם כן, פשוט תקרא ידנית ל event של העכבר Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) button מייצג איזה כפתור של העבר נלחץ (vbLeftButton, vbRightButton) X,Y המיקום של הלחיצה על המסך
 
לא הבנת אותי

זה לא מה שהתכוונתי!!! קודם כל מה שכתבת לי - אני יודע! (ובמקום vbleftbutton ו vbrightbutton אתה יכול לכתוב 1 ו 2) חוץ מזה עשיתי תוכנה שאתה מזיז את העכבר בעזרת החיצים. ונניח שאתה צודק ל key_down, איך אתה יכול לקרוא ללחיצה על עכבר????????? (זה בלתי אפשרי בלי mouse_event)
 

shai_shai_shai

New member
תשובה לדודי

הכל מתבסס על המקש KeyPreview אם למשל אתה רוצה להזיז slider ולעצור אותו אתה תריך להשתמש בשתי timer זה קוד של משהו שיעזור לך Option Explicit Dim darttop As Integer Dim dartleft As Integer Private Sub Command1_Click() Timer1.Enabled = True Command1.Enabled = False KeyPreview = True Slider1.Value = 0 Slider2.Value = 0 dart.Visible = False End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeySpace Then If (Timer1.Enabled) Or (Timer2.Enabled) = True Then Timer1.Enabled = False Timer2.Enabled = False Timer3.Enabled = True Else Timer3.Enabled = False Timer4.Enabled = False KeyPreview = False darttop = Slider1.Value dartleft = Slider2.Value Select Case darttop Case 0 dart.Top = 130 Case 1 dart.Top = 450 Case 2 dart.Top = 720 Case 3 dart.Top = 1040 Case 4 dart.Top = 1320 Case 5 dart.Top = 1630 Case 6 dart.Top = 1920 Case 7 dart.Top = 2200 Case 8 dart.Top = 2520 Case 9 dart.Top = 2800 Case 10 dart.Top = 3120 End Select Select Case dartleft Case 0 dart.Left = 150 Case 1 dart.Left = 450 Case 2 dart.Left = 740 Case 3 dart.Left = 1050 Case 4 dart.Left = 1350 Case 5 dart.Left = 1660 Case 6 dart.Left = 1960 Case 7 dart.Left = 2280 Case 8 dart.Left = 2560 Case 9 dart.Left = 2880 Case 10 dart.Left = 3180 End Select dart.Visible = True Command1.Enabled = True If (Slider1.Value = 5) And (Slider2.Value = 5) Then MsgBox "Congratulation! You win the game!", vbInformation, "Darts" ElseIf (Slider1.Value = 0) Or (Slider2.Value = 0) Then MsgBox "Too bab. Try again.", vbInformation, "Darts" ElseIf (Slider1.Value = 10) Or (Slider2.Value = 10) Then MsgBox "Too bab. Try again.", vbInformation, "Darts" ElseIf (Slider1.Value = 1) Or (Slider2.Value = 1) Then MsgBox "Too bab. Try again.", vbInformation, "Darts" ElseIf (Slider1.Value = 9) Or (Slider2.Value = 9) Then MsgBox "Too bab. Try again.", vbInformation, "Darts" ElseIf (Slider1.Value = 4) And (Slider2.Value = 4) Then MsgBox "Very good. Try again.", vbInformation, "Darts" ElseIf (Slider1.Value = 4) And (Slider2.Value = 5) Then MsgBox "Very good. Try again.", vbInformation, "Darts" ElseIf (Slider1.Value = 4) And (Slider2.Value = 6) Then MsgBox "Very good. Try again.", vbInformation, "Darts" ElseIf (Slider1.Value = 5) And (Slider2.Value = 4) Then MsgBox "Very good. Try again.", vbInformation, "Darts" ElseIf (Slider1.Value = 5) And (Slider2.Value = 6) Then MsgBox "Very good. Try again.", vbInformation, "Darts" ElseIf (Slider1.Value = 6) And (Slider2.Value = 4) Then MsgBox "Very good. Try again.", vbInformation, "Darts" ElseIf (Slider1.Value = 6) And (Slider2.Value = 5) Then MsgBox "Very good. Try again.", vbInformation, "Darts" ElseIf (Slider1.Value = 6) And (Slider2.Value = 6) Then MsgBox "Very good. Try again.", vbInformation, "Darts" Else MsgBox "Nice Try.", vbInformation, "Darts" End If End If End If End Sub Private Sub Form_Load() MsgBox "Start a new game and press space button to stop the slider. Have fun.", vbInformation, "Darts" End Sub Private Sub Timer1_Timer() If Slider1.Value < 10 Then Slider1.Value = Slider1.Value + 1 Else Timer1.Enabled = False Timer2.Enabled = True End If End Sub Private Sub Timer2_Timer() If Slider1.Value > 0 Then Slider1.Value = Slider1.Value - 1 Else Timer1.Enabled = True Timer2.Enabled = False End If End Sub Private Sub Timer3_Timer() If Slider2.Value < 10 Then Slider2.Value = Slider2.Value + 1 Else Timer3.Enabled = False Timer4.Enabled = True End If End Sub Private Sub Timer4_Timer() If Slider2.Value > 0 Then Slider2.Value = Slider2.Value - 1 Else Timer3.Enabled = True Timer4.Enabled = False End If End Sub זה קוד של משחק חיצים שאתה יכול להוריד באתר
 
אתם לא מבינים למה אני מתכוון...

עשיתי תוכנה שבעזרתה ניתן להזיז את סמן העכבר עם החיצים. אתם כולכם ניסיתם להסביר לי איך להשתמש בלחיצה רגילה. את זה אני יודע! אני צריך את פונקציית mouse_event שנגיד שיש לי כפתור על המסך, ואני רוצה לזוז אליו עם החיצים שבמחשב, וללחוץ על רווח, וזה יהיה כאילו שלחצתי על העכבר!!! מקווה שהבנתם אותי. הדרך היחידה לעשות זאת היא בעזרת הפונקצייה mouse_even אז אל תנסו דרכים אחרות להסביר לי. ובכל זאת תודה על הנסיון... דודי.
 
למעלה