من ابتدا اين برنامه را امتحان كردم:
کد:
Private Sub Command1_Click()
Print vbShiftMask
Print vbCtrlMask
Print vbAltMask
End Sub
1
2
4
نتيجه اجرا را با رنگ قرمز مي بينيد.
پس دريافتم كه اين 3 كلمه كه با vb شروع مي شوند ، در حقيقت constant هستند يعني جزو ثوابت(مقدار ثابت ها) هستند.
سپس برنامه زير را آزمودم:
کد:
Private Sub Command1_Click()
Print (vbShiftMask And 1)
Print (vbShiftMask And 2)
Print (vbShiftMask And 4)
Print
Print (vbCtrlMask And 1)
Print (vbCtrlMask And 2)
Print (vbCtrlMask And 4)
Print
Print (vbAltMask And 1)
Print (vbAltMask And 2)
Print (vbAltMask And 4)
End Sub
1
0
0
0
2
0
0
0
4
نتيجه and كردن (اعداد قرمز) را ببينيد. چه قانوني بر visual basic براي and برقرار است.
اگر بخواهيم نگاهي بيتي داشته باشيم و فرض كنيم 3 خانه داريم ،
وقتي and مي كنيم هر يك از خانه ها وقتي مقدار true بيرون مي دهد كه هر دو عبارتي كه and شده اند true باشند. در اسمبلي در اين حالت 1 خواهد بود اين بيت true شده. ولي اينجا در vb نتايج 3 خانه عبارت است از : 1 و 2 و 4 .
البته مشكلي نيست . مهم اينه كه از اين اعداد درست استفاده شود.
== = == = == = ==
سپس من برنامه زير را نوشتم:
کد:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Print Shift;
End Sub
بعد اجراي اين برنامه ديدم كه با زدن دكمه هاي معمولي ، 0 چاپ ميشه و با 3 دكمه مورد بحث يعني شيفت و كنترل و آلت ، به ترتيب اعداد 1 و 2و 4 چاپ ميشه.
سپس برنامه زير را نوشتم:
کد:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case Shift
Case 0
Print " no special key"
Case 1
Print " shift"
Case 2
Print " ctrl"
Case 4
Print " alt"
Case Else
Print "Error..."
End Select
End Sub
اين برنامه با زدن 3 كليد مورد بحث اعداد 1 و 2و 4 را چاپ مي كنه و با بقيه كليدها عدد 0 را چاپ مي كنه.
== = == = == == == = == = == == == =
ولي من همه اين تمرينها را انجام دادم تا خودم بفهمم قضيه از چه قراره و جواب شما نبود اينها.
به نظر كدي كه در انتهاي پست قبلي وجود دارد ، يعني اين:
کد:
Private Sub AgUiAx2DCntrl1_KeyDown(KeyCode As Short, Shift As Short)
If (KeyCode = vbKeyA) And ((Shift And eCtrlPressed) > 0) Then
' CTRL-a has been key is down!
...
End If
End Sub
مي تواند به شما راهكاري ارائه دهد تا آنچه هدف برنامه شماست به آن برسيد.
يعني با تركيب if و and كد بسازيد. شايد هم اصلا and نياز نباشه. ديگه خودتان مي دانيد بايد چكار بكنيد تا كدتان هدف شما را برآورده كند.
.