UKO Użytkowanie Komputerów
Visual Basic Lab 5
Projekt Mysz daje ejokazję do zapoznania się z następującymi możliwościami Visual Basica:
obsługiwanie przycisków myszy;
programowanie operacji przeciągnij i upuść;
W oknie narzędziowym nie ma kontrolki myszy, gdyż aplikacja ma reagować na zdarzenia związane z działaniem myszy (kliknięcia przycisku, dwukrotne kliknięcie przycisku, przeciąganie i upuszczanie, zmiana pozycji...), a nie na jej właściwości. Poniżej podajemy, jakie wartości należy przypisać właściwości MousePointer obiektu, nad którym przemieszcza się mysz, aby zmienić kształt wskaźnika myszy w trakcie tej operacji.
Nazwa stałej |
Wartość |
Opis |
vbArrow |
1 |
Strzałka standardowa |
vbCrosshair |
2 |
Krzyż nitkowy |
vbIbeam |
3 |
Kursor tekstowy I |
vbIconPointer |
4 |
Ikona |
vbSizePointer |
5 |
Poczwórna strzałka w górę, w dól, w prawo, w lewo |
vbSizeNESW |
6 |
Podwójna strzałka Pn-W i Pd-Z |
vbSizeNS |
7 |
Podwójna strzałka w górę i w dół |
vbSizeNWSE |
8 |
Podwójna strzałka w górę i w dół |
vbSizeWE |
9 |
Podwójna strzałka Pn-Z i Pd-W |
vbUpArrow |
10 |
Strzałka w górę |
vbHourglass |
11 |
Klepsydra |
vbNoDrop |
12 |
Nie upuszczać |
vbArrowHourglass |
13 |
Klepsydra ze strzałką |
vbArrowQuestion |
14 |
Znak zapytania ze strzałką |
vbSizeAll |
15 |
Podwójna strzałka przy zmianie rozmiaru okna |
vbCustom |
99 |
Kształt wskazany przy właściwości MouseIcon |
Visual Basic generuje zdarzenie przesunięcia myszy dopiero po wykryciu przesunięcia o każde 10-15 twipów.
Krok 1.
Projektujemy formę, pozwalającą użytkownikowi zapoznać się z obsługą myszy.
Rys. 1. Forma do ćwiczeń z obsługą myszy.
Opis kontrolek formy z Rys. 1.
Kontrolka, właściwość |
|
Wartość |
|
|
|
Forma, Name |
|
frmMysz |
Forma, Caption |
|
Mysz |
Pole tekstowe, Name |
|
txtMysz |
Pole tekstowe, Alignment |
|
2 - Center |
Pole tekstowe, Multiline |
|
True |
Pole tekstowe, Text |
|
Nie bój się myszy! |
Obraz, Name |
|
obrNiespodzianka |
Obraz, Picture |
|
ścieżka dostępu |
Obraz, Name |
|
obrCos |
Obraz, Picture |
|
ścieżka dostępu |
Przycisk poleceń, Name |
|
plcKoniec |
Przycisk poleceń, Caption |
|
&Koniec |
Kod formy
01 Private Sub Form_Click()
02 txtMysz.Text = "Kliknąłeś formę!"
03 Beep 'Daj sygnał, że klikąłes formę
04 Print "Kliknąłeś formę!"
05 End Sub
06
07 Private Sub Form_DblClick()
08 txtMysz.Text = "Dwukrotnie kliknąłeś formę!"
09 Beep 'Daj sygnał, że dwukrotnie kliknąłeś formę
10 Beep
11 Print "Dwukrotnie kliknąłeś formę!"
12 End Sub
13
14 Private Sub Form_MouseDown(Button As Integer, _
15 Shift As Integer, _
16 X As Single, Y As Single)
17 'Przycisk myszy naciśnięty
18 txtMysz.Text = "Przycisnąłeś przycisk myszy w X = " _
19 & X & ", Y = " & Y & _
20 " punkcie formy!"
21 End Sub
22
23 Private Sub Form_MouseMove(Button As Integer, _
24 Shift As Integer, _
25 X As Single, Y As Single)
26 'Tu nie wykorzystujemy argumentów myszy
27 txtMysz.Text = "Mysz jest przesuwana...!"
28 End Sub
29
30 Private Sub obrNiespodzianka_Click()
31 'Kliknąłeś obrazek
32 txtMysz.Text = "Kliknąłeś obrazek!"
33 Beep
34 Print "Kliknąłeś obrazek!"
35 End Sub
36
37 Private Sub obrNiespodzianka_DblClick()
38 'Kliknąłeś obrazek dwukrotnie
39 txtMysz.Text = "Kliknąłeś obrazek dwukrotnie!"
40 Beep
41 Beep
42 Print "Kliknąłeś obrazek dwukrotnie!"
43 End Sub
44
45 Private Sub obrNiespodzianka_MouseDown(Button As Integer, _
46 Shift As Integer, _
47 X As Single, Y As Single)
48 'Przycisk myszy naciśnięty nad obrazkiem
49 txtMysz.Text = "Przycisnąłeś przycisk myszy w X = " _
50 & X & ", Y = " & Y & _
51 " punkcie obrazka!"
52 End Sub
53
54 Private Sub obrNiespodzianka_MouseMove(Button As Integer, _
55 Shift As Integer, _
56 X As Single, Y As Single)
57
58 'Mysz jest przesuwana nad obrazkiem...!
59 txtMysz.Text = "Mysz jest przesuwana nad obrazkiem...!"
60 End Sub
61
62 Private Sub Form_DragDrop(Source As Control, _
63 X As Single, Y As Single)
64 'ustaw DragMode obrNiespodzianka na 1-Automatic
65 obrCos.DragMode = 0
66 obrNiespodzianka.DragMode = 1
67 Source.Move X, Y 'upuść obrazek
68 End Sub
69
70 Private Sub obrCos_MouseDown(Button As Integer, _
71 Shift As Integer, _
72 X As Single, Y As Single)
73 'ustaw DragMode obrCos na 0-Manual
74 obrNiespodzianka.DragMode = 1
75 obrCos.DragMode = 0
76 obrCos.Drag 'inicjuje przeciągnij i upuść
77 End Sub
78
79 Private Sub plcKoniec_Click()
80 Dim intReply As Integer
81
82 'Badanie, czy kończymy
83 intReply = MsgBox("Czy na pewno chcesz zakończyć pracę?", _
84 vbYesNo, _
85 "Zakończyć pracę?")
86
87 If (intReply = 6) Then
88 ' Kod, gdy opowiedz Tak
89 Beep
90 End
91 GoTo Koniec
92 Else
93 ' Kod, gdy odpowiedz Nie
94 GoTo Koniec
95 End If
96 Koniec: 'Wyjdź z aplikacji
97 End Sub
Kod zawiera różne procedury związane z aktywnością myszy:
procedury związane z szybkim pojedynczym lub podwójnym naciśnięciem przycisku myszy:
Form_Click() (linia 1, 30),
DblClick() (linia 7, 37),
obrNiespodzianka_Click()(linia 7),
obrNiespodzianka_DblClick()(linia 7),
procedury związane z wciśnięciem i przytrzymaniem przycisku myszy:
MouseDown(Button As Integer, _
Shift As Integer, _
X As Single, Y As Single) (linia 45, 70)
procedury związane z ruchem myszy:
MouseMove(Button As Integer, _
Shift As Integer, _
X As Single, Y As Single) (linia 54)
implementacja automatycznego (a) i ręcznego (b) przeciągania i upuszczania obiektów:
(a) Form_DragDrop(Source As Control, _
X As Single, Y As Single) (linia 62)
(b) obrCos_MouseDown(Button As Integer, _
Shift As Integer, _
X As Single, Y As Single) (linia 70)
Kod związany z przyciskiem poleceń kończącym aplikację pokazany jest w liniach 79 -97.
Procedura badająca zwolnienie przycisku myszy nosi nazwę MouseUp.
Zadanie domowe:
Napisz aplikację wykrywającą wciśnięcie kombinacji przycisków myszy i klawiatury. Szkielet kodu przytaczamy poniżej.
01 Private Sub obrLadny_MouseDown(Button As Integer, _
02 Shift As Integer, _
03 X As Single, Y As Single)
04 Dim intStanShift As Integer
05 intStanShift = Shift And 7 `specjalne AND bitowe
06 Select Case intStanShift
07 Case 1
08 `Kod dla kombinacji z [Shift]
09 Case 2
10 `Kod dla kombinacji z [Ctrl]
11 Case 3
12 `Kod dla kombinacji z [Alt]
13 Case 4
14 `Kod dla kombinacji z [Shift + Ctrl]
15 Case 5
16 `Kod dla kombinacji z [Shift +Alt]
17 Case 6
18 `Kod dla kombinacji z [Ctrl + Alt]
19 Case 7
20 `Kod dla kombinacji z [Shift+Ctrl+Alt]
21 End Select
22 End Sub
II. Projekt Lista daje okazję do zapoznania się z następującymi możliwościami Visual Basica:
korzystanie z pól list i listy rozwijanej;
inicjowanie, dodawanie i usuwanie elementów z kontrolki listy;
praca z tablicami kontrolek.
Kontrolka prostego pola listy
umożliwia wybranie jednego lub więcej elementów równocześnie. Do dodawania elementów list najlepiej służy metoda AddItem. Odowiednie polecenia umieszczamy w procedurze zdarzenia Form_Load. Jeśli okno listy jest zbyt małe i nie widać wszystkich elementów automatycznie są dołączane paski przewijania. Niezależnie od powyższych czynności, należy oczyścić zawartość właściwości LIST kontrolki pola listy. Jeśli tego nie zrobimy, to ta nazwa będzie wykorzystywana jako pierwszy element listy.
Ustawienie właściwości Sorted na True, spowoduje posortowanie listy alfabetycznie. Metoda RemoveItem usuwa elementy listy, a ListCount znajduje ich liczbę.
Lista rozwijana zajmuje w formie tylko jedną linię do czasu, aż użytkownik otworzy listę i wyświetli jej zawartość
Proste pole kombi, wygląda jak proste pole listy z dołączonym polem tekstowym.
Pole kombi rozwijane oszczędza miejsca na ekranie, bo jest zwinięte i rozwija się tylko na żądanie użytkownika.
Wszystkie trzy powyższe obiekty obsługuje kontrolka pola kombi
, a różnice miedzy nimi uzyskuje się za pomocą wyboru wartości właściwości Style
Nazwa stałej |
Wartość |
Opis |
DropDown Combo |
0 |
Pole kombi rozwijane |
Simple Combo |
1 |
Proste pole kombi |
DropDown List
|
2 |
Lista rozwijana |
UKO Użytkowanie Komputerów, Lab 5
Visual Basic Lab 5.doc 6/6