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

Google
 

Przykładowa aplikacja


poprzednia...


Gdy mamy proceduę, która ustawia etykiety na środku formy, możemy napisać kod, który będzie powodował zmianę formatu wyświetlania daty i czas. Po zmianie formatu mogą zmienić się rozmiary kontrolek, więc trzeba będzie wywołać procedurę ustawiającą kontrolki na formie.
Gdy użytkownik wybierze jeden z formatów daty, wywołane zostanie zdarzenie mnuDataFormatFormaty_Click. Ponieważ wszystkie polecenia w menu określające format daty mają taką samą nazwę mnuDataFormatFormaty, więc przy wywołaniu zdarzenia Click, Visual Basic poda indeks polecenia, które zostało wybrane. Ponieważ w fazie projektowania ustaliliśmy te indeksy na wartości 1 do 3, wiemy który indeks odpowiada któremu poleceniu.
Ponieważ w menu zaznaczamy znacznikiem V, który format aktualnie jest używany, więc musimy zaznaczyć odpowiedni format, który wybrał użytkownik. W tym celu najpierw ustawiamy właściwości Checked wszystkich poleceń mnuDataFormatFormaty na False. W ten sposób w menu nie będzie zaznaczonego znacznikiem V polecenia. Następnie ustawiamy właściwość Checked tego polecenia, które wybrał użytkownik (a którego indeks został przekazany do procedury mnuDataFormatFormaty_Click). Znacznik V pojawi się przy tym formacie, który wybrał użytkownik. Następnie w zależności od wartości przekazanego Indeksu podstawiamy odpowiednią wartość formatowania do zmiennej globalnej gstrFormatDaty. Zmienna ta będzie później wykorzystana przez zdarzenie tmrZegar_Timer, aby wyświetlić nową wartość w etykiecie. Po podstawieniu nowej wartości do zmiennej globalnej możemy wywołać zdarzenie tmrZegar_Timer, aby natychmmiastowo wyświelić datę w nowym formacie, lub możemy poczekać, aż wystąpi to zdarzenie (mniej niż 1 sekundę) i samo wyświetli datę w nowym formacie.

Private Sub mnuDataFormatFormaty_Click(Index As Integer)
Dim bytI As Byte
   For bytI = 1 To 3
      mnuDataFormatFormaty(bytI).Checked = False
         'ustawienie właściwości Checked wszystkich pozycji menu Data/Format
         'na False i usunięcie wszystkich znaczników V
   Next bytI
   mnuDataFormatFormaty(Index).Checked = True
      'ustawienie Checked na True dla wybranego formatu daty
   Select Case Index
      'w zależności od indeksu wybranego formatu do zmiennej gstrFormatDaty
      'podstawiana jest wartość tekstowa wykorzystywana przez funkcję Format()
      'do formatowania daty
      Case 1:
         gstrFormatDaty = "Long Date"
      Case 2:
         gstrFormatDaty = "Medium Date"
      Case 3:
         gstrFormatDaty = "Short Date"
   End Select
   Call tmrZegar_Timer
      'wyświetlenie daty w nowym formacie
   Call UstawEtykiety
      'ustawie pozycji etykiet
End Sub

Podobnie postępujemy w przypadku zmiany formatu wyświetlania czasu. Dopisujemy odpowiedni kod do procedury zdarzenia mnuCzasFormatFormaty_Click:

Private Sub mnuCzasFormatFormaty_Click(Index As Integer)
Dim bytI As Byte
   For bytI = 1 To 3
      mnuCzasFormatFormaty(bytI).Checked = False
         'ustawienie właściwości Checked wszystkich pozycji menu Czas/Format
         'na False i usunięcie wszystkich znaczników V
   Next bytI
   mnuCzasFormatFormaty(Index).Checked = True
      'ustawienie Checked na True dla wybranego formatu czasu
   Select Case Index
      'w zależności od indeksu wybranego formatu do zmiennej gstrFormatCzasu
      'podstawiana jest wartość tekstowa wykorzystywana przez funkcję Format()
      'do formatowania czasu
      Case 1:
         gstrFormatCzasu = "Long Time"
      Case 2:
         gstrFormatCzasu = "Medium Time"
      Case 3:
         gstrFormatCzasu = "Short Time"
   End Select
   Call tmrZegar_Timer
      'wyświetlenie czasu w nowym formacie
   Call UstawEtykiety
      'ustawie pozycji etykiet
End Sub

Dodamy teraz kod programu, który umożliwi zmianę czcionki etykiet. Kod ten musi być zawarty w procedurach zdarzeń mnuDataCzcionka_Click i mnuCzasCzcionka_Click. Ponieważ obie procedury będą wykonywały to samo zadanie (pobierały nowe ustawienia czcionki) tylko, że dla różnych kontrolek, więc zamiast pisać dwukrotnie ten sam kod zrobimy jedną osobną procedurę, której jako parametr będziemy przekazywać nazwę odpowiedniej kontrolki (lblData lub lblCzas).
Do zmiany czcionki wykorzystamy kontrolkę CommonDialog. Wyświetla ona okno Czcionka, w którym można wybrać nazwę, rozmiar, kolor i styl czcionki. Aby wykorzystać tę kontrolkę do wyświetlenia okna Czcionka należy najpierw ustawić właściwość Flags. We właściwości tej ustawia się rodzaj czcionek wyświetlanych przez okno Czcionka (ekranowe, drukarkowe, obyda typy itd.) oraz dodatkowe atrybuty okna dialogowego. Ponieważ nasz zegar będzie wyświetlany tylko na ekranie, do właściwości Flags wstawimy wartość określającą czcionki ekranowe (gdybyśmy nie wstawili żadnej wartości to okno Czcionka nie wyświetliłoby żadnych dostępnych czcionek). Dodamy tam również wartość umożliwiającą nadanie czcionkom atrybutów Podkreślenie i Przkreślenie.
Jeżeli ustawimy właściwość Flags i wywołamy metodę ShowFont, aby wyświetlić okno Czcionka, to otworzy się ono wyświetlając listę dostępnych czcionek ekranowych i ich atrybutów, ale bez wybranej czcionki domyślnej. Gdyby użytkownik chciał zmienić tylko rozmiar aktualnie używanej czcionki, musiałby wybrać odpowiednią nazwę czcionki, atrybuty, kolor i rozmiar. Aby to ułatwić możemy przez wywołaniem metody ShowFont przesłać do kontrolki cdlOknaDialogowe atrybuty czcionki aktualnie używanej. Okno Czcionka otworzy się wtedy na aktualnie używanej czcionce, i jeżeli użytkownik będzie chciał zmienić tylko rozmiar czcionki, to zrobi to bez konieczności ustawiania innych atrybutów.
Czcionki
Atrybuty czcionki przechowywane są przez etykiety we właściwości Font, a jej kolor we właściwości ForeColor. Kontrolka CommonDialog przechowuje te informacje we właściwościach: FontName, FontSize, FontBold, FontItalic, FontStrikethru, FontUnderline oraz Color.
Tworzymy więc procedurę ZmienCzcionke i przekazujemy do niej jako parametr nazwę kontrolki. Ustawiamy właściwość Flags i przepisujemy atrybuty aktualnie wykorzystywanej czcionki etykiety do kontrolki CommonDialog, po czym wywołujemy metodę ShowFont. Następnie atrybuty nowo wybranej czcionki przepisujemy do etykiety. Jeżeli użytkownik przyciśnie Anuluj to kontrolka CommonDialog zwróci takie wartości jakie zostały do niej zapisane przed wywołaniem metody ShowFont. Na koniec procedury ustawiamy etykiety centralnie na formie (ponieważ ich rozmiar mógł się zmienić).

Public Sub ZmienCzcionke(Kontrolka As Control)
   cdlOknaDialogowe.Flags = cdlCFScreenFonts + cdlCFEffects
      'ustawienie flag, powodujących wyświetlenie dostępnych czcionek
      'ekranowych i opcji Podkreślone i Przekreślone

   cdlOknaDialogowe.FontName = Kontrolka.Font.Name
   cdlOknaDialogowe.FontSize = Kontrolka.Font.Size
   cdlOknaDialogowe.FontBold = Kontrolka.Font.Bold
   cdlOknaDialogowe.FontItalic = Kontrolka.Font.Italic
   cdlOknaDialogowe.FontStrikethru = Kontrolka.Font.Strikethrough
   cdlOknaDialogowe.FontUnderline = Kontrolka.Font.Underline

      'przekazanie aktualnie wykorzystywanej czcionki kontrolki
      'do kontrolki CommonDialog jako wartości startowej

   cdlOknaDialogowe.Color = Kontrolka.ForeColor
      'przekazanie koloru czcionki do CommonDialog
   cdlOknaDialogowe.ShowFont
      'wyświetlenie okna Czcionki
   Kontrolka.Font.Name = cdlOknaDialogowe.FontName
   Kontrolka.Font.Size = cdlOknaDialogowe.FontSize
   Kontrolka.Font.Bold = cdlOknaDialogowe.FontBold
   Kontrolka.Font.Italic = cdlOknaDialogowe.FontItalic
   Kontrolka.Font.Strikethrough = cdlOknaDialogowe.FontStrikethru
   Kontrolka.Font.Underline = cdlOknaDialogowe.FontUnderline

      'przekazanie wybranych atrybutów czcionki do kontrolki
   Kontrolka.ForeColor = cdlOknaDialogowe.Color
      'przekazanie wybranego koloru czcionki do kontrolki
   Call UstawEtykiety
      'ustawienie pozycji kontrolek
End Sub

Teraz w procedurach zdarzeń mnuDataCzcionka_Click i mnuCzasCzcionka_Click wystarczy tylko wywołać procedurę ZmienCzcionke i przekazac jako parametr nazwy kontrolek lblData i lblCzas.

Private Sub mnuDataCzcionka_Click()
   'wywołanie procedury zmieniającej czcionkę etykiety lblData
   Call ZmienCzcionke(lblData)
End Sub
Private Sub mnuCzasCzcionka_Click()
   'wywołanie procedury zmieniającej czcionkę etykiety lblCzas
   Call ZmienCzcionke(lblCzas)
End Sub

Możemy teraz przejść do poleceń menu ustawiających datę (mnuDataUstaw) i czas (mnuCzasUstaw). Wykorzystujemy zdarzenie Click, aby wykonać kod, który ustawi nową datę i czas.
Aby ustawić datę i czas wykorzystujemy rozkazy Date i Time. Aby pobrać datę i czas od użytkownika wykorzystamy funkcję InputBox. Wyświetla ona okno dialogowe, w którym użytkownik może wpisać dowolny łańcuch znaków. Aby ułatwić mu wprowadzanie nowej daty lub czasu, możemy wyświelić w oknie InputBox wartość domyślną, która będzie wyświetlana w oknie wprowadzania zanim użytkownik zmieni ją lub wpisze coś innego.

InputBox

Gdy użytkownik wprowadzi już nową wartość musimy sprawdzić, czy jest to poprawna data lub czas. Wykorzystamy do tego funkcję IsDate.

Private Sub mnuCzasUstaw_Click()
Dim varCzas As Variant   'zmienna w której będzie pobrany od użytkownika łańcuch znaków
   varCzas = InputBox("Podaj nowy czas: ", "Czas: " & lblCzas.Caption, lblCzas.Caption)
   If IsDate(varCzas) Then
      Time = varCzas
   End If
End Sub
Private Sub mnuDataUstaw_Click()
Dim varData As Variant   'zmienna w której będzie pobrany od użytkownika łańcuch znaków
   varData = InputBox("Podaj nową datę: ", "Data: " & lblData.Caption, lblData.Caption)
   If IsDate(varData) Then
      Date = varCzas
   End If
End Sub

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