PoprzedniaWyżejGłównaSpis treściIndex hasełZnajdźBokGora
BokGora

Google
 

Przykładowa aplikacja


poprzednia...


Dopiszemy procedurę zdarzenia mnuZegarKolor_Click, która zmieni kolor tła formy. Wykorzystamy do tego kontrolkę CommonDialog i jej metodę ShowColor. Podobnie jak przy zmianie czcionki, najpierw przekażemy bieżący kolor do kontrolki CommonDialog, potem wywołamy metodę ShowColor a zwrócony kolor ustawimy jako kolor tła.

Private Sub mnuZegarKolor_Click()
   cdlOknaDialogowe.Color = frmZegar.BackColor
      'przekazanie koloru do kontrolki
   cdlOknaDialogowe.ShowColor
      'wyświetla okno kolorów
   frmZegar.BackColor = cdlOknaDialogowe.Color
      'ustawienie nowego koloru formy
End Sub

Dopiszemy kod, który będzie ukrywał i pokazywał datę. Będzie on uruchamiany, gdy użytkownik wybierze polecenie Pokaż menu Data lub polecenie Data menu Menu (jest to menu pop-up, które będzie wyświetlane, gdy użytkownik kliknie prawym klawiszem myszy na formie). Ponieważ polecenia te mają takie samo znaczenie i występuje przy nich znacznik V, należy zadbać, aby wywołanie jednego z nich miało wpływ na znaczniki obydwu (jeżeli Data\Pokaz jest zaznaczone, to Menu\Data też musi być). Kod procedury musi więc równocześnie zmieniać wartość właściwości Checked obydwu poleceń na przeciwną (przy użyciu operatora Not). Musi również zmieniać właściwość Visible kontrolki lblData, aby ją ukrywać lub pokazywać. Ponieważ na początku kontrolka lblData jest widoczna, a polecenie Data\Pokaz jest zaznaczone, więc wystarczy zmieniać właściwość Visible kontrolki lblData na przeciwną równocześnie ze zmianą właściwości Checked poleceń Data\Pokaż i Menu\Data.
Po tym należy wyłować procedurę, która ustawi nowe pozycje kontrolek na formie.

Private Sub mnuDataPokaz_Click()
   mnuDataPokaz.Checked = Not (mnuDataPokaz.Checked)
   mnuMenuData.Checked = mnuDataPokaz.Checked
      'zmiana Checked menu mnuDataPokaz i mnuMenuData, które mają takie samo
      'znacznie, na przeciwną

   lblData.Visible = Not (lblData.Visible)
      'ukrycie lub pokazanie daty
   Call UstawEtykiety
      'ustawienie nowych pozycji etykiet
End Sub

Procedura mnuMenuData_Click, która ma wykonać dokładnie tę samą funkcję może teraz jedynie wywołać procedurę mnuDataPokaz_Click:
Private Sub mnuMenuData_Click()
   Call mnuDataPokaz_Click
End Sub

Identycznie postępujemy w stosunku do poleceń ukrywających i pokazujących czas:

Private Sub mnuCzasPokaz_Click()
   mnuCzasPokaz.Checked = Not (mnuCzasPokaz.Checked)
   mnuMenuCzas.Checked = mnuCzasPokaz.Checked
      'zmiana Checked menu mnuCzasPokaz i mnuMenuCzas, które mają takie samo
      'znacznie, na przeciwną

   lblCzas.Visible = Not (lblCzas.Visible)
      'ukrycie lub pokazanie czasu
   Call UstawEtykiety
      'ustawienie nowych pozycji etykiet
End Sub
Private Sub mnuMenuCzas_Click()
   Call mnuCzasPokaz_Click
End Sub

Dodajemy kod proceury, która będzi ukrywać i pokazywać menu. Będzie ona zmieniać właściwość Visible poleceń menu na przeciwną przy użyciu operatora Not. Dodatkowo, gdy menu będzie widoczne, to polecenie "Ukryj menu" będzie się zmieniać na "Pokaż menu".

Private Sub mnuMenuUkryj_Click()
   mnuZegar.Visible = Not (mnuZegar.Visible)
   mnuData.Visible = Not (mnuData.Visible)
   mnuCzas.Visible = Not (mnuCzas.Visible)
      'pokazanie lub ukrycie menu
   If mnuZegar.Visible = True Then
      mnuMenuUkryj.Caption = "&Ukryj menu"
         'jeżeli menu jest widoczne to zmiana Caption menu mnuMenuUkryj
         'na "Ukryj menu"
   Else
      mnuMenuUkryj.Caption = "&Pokaż menu"
         'jeżeli menu nie jest widoczne to zmiana Caption menu mnuMenuUkryj
         'na "Pokaz menu"

   End If
End Sub

Pozostało jeszcze dodanie menu pop-up, gdy użytkownik kliknie prawym przyciskiem myszy. Nie można wykorzystać zdarzenia Click, ponieważ nie zwraca ono wartości określającej, który przycisk został naciśnięty. Zamiast niego należy wykorzystać zdarzenie MouseDown lub MouseUp.
Procedura tego zdarzenia wykorzysta metodę PopupMenu formy frmZegar, aby wyświetlić menu o podanej nazwie. Dla formy rozwijane będzie menu pop-up Menu.

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
   If Button = vbRightButton Then
      'jeżeli wciśnięto prawy przycisk myszy
      frmZegar.PopupMenu mnuMenu
         'rozwinięcie menu pop-up: Menu
   End If
End Sub

Podobnie będą wyglądały procedury dla kontrolek lblData i lblCzas:

Private Sub lblCzas_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
   If Button = vbRightButton Then
      'jeżeli wciśnięto prawy przycisk myszy
      frmZegar.PopupMenu mnuCzas
         'rozwinięcie menu pop-up: Czas
   End If
End Sub
Private Sub lblData_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
   If Button = vbRightButton Then
      'jeżeli wciśnięto prawy przycisk myszy
      frmZegar.PopupMenu mnuData
         'rozwinięcie menu pop-up: Data
   End If
End Sub

To już cały kod jaki należało dodać do aplikacji.
Kolejny etap to uruchomienie (znalezienie ewentualnych błędów i edycja).

Następnie wybieramy polecenie Project1 Properties z menu Project. W oknie dialogowym w polu Project Name wpisujemy Zegar, w polu Project Description opis programu. Dodatkowe paramety możemy ustalić na zakładce Make. Zatwierdzamy przyciskiem OK. Możemy jeszcze zmienić właściwość Icon formy i wybieramy polecenie Make Zegar.exe menu File. Wybieramy ścieżkę i nazwę pliku i zatwierdzamy OK. Visual Basic skompiluje projekt do pliku wykonywalnego, który będzie działał bez środowiska Microsft Visual Basic.

Można również jeszcze rozbudować aplikację. Można np. wymusić, aby zegar był zawsze wyświetlany na wierzchu (nad wszystkimi innymi działającymi aplikacjami), można dorobić kod, który będzie automatycznie uruchamiał zegar przy włączaniu Windows, lub można wykorzystać rejestr systemu, aby przechowywać ustawienia użytkownika i zawsze uruchamiać zegar z takimi atrybutami, jakie ustawił sobie użytkownik.

Przykłady działania aplikacji:

Przykład1

Przykład2

Przykład3

dalej...






Google
 
Poprzednia | Wyżej | Strona główna | Spis Treści | Index haseł | Opis VB

BokDol
PoprzedniaWyżejGłównaSpis treściIndex hasełZnajdźBokGora
BokGora