Zegarek binarny

Dzisiaj pokaże jak zrobić  zegarek binarny, taki jak na obrazku:

zb

Zaczynamy od stworzenia nowego pustego projektu, dodajemy następujące elementy:

– 6x label

– 1x textbox

– 3x TableLayoutPanel (z dwiema kolumnami z 4 wierszami) , wiersze ustawiamy na 25% a kolumny na 50% tak jak na obrazku:

zb1Kiedy to zrobimy do każdej komórki przenosimy z toolboxa panel dla wybranych paneli wybieramy kolor, ja wybrałem „CadetBlue” ostatecznie wygląda to tak jak na obrazku:

zb2Musimy dodać jeszcze tylko „Timer” , znajdujemy w toolboxie Timer i przenosimy go na naszą forme

zd2, teraz gdy wszystko mamy zmieniamy tylko tekst trzech labeli na „godziny”,”minuty”,”sekundy” powinno to wyglądać jak na obrazku i tym samym wszystko mamy przygotowane:

zd3Zaczynamy kodowanie od wystartowanie naszego zegarka, w „form1_load” wstawiamy kod który wystartuje nasz zegarek:

Teraz przechodząc do graficznej edycji naszej formy przyciskamy dwukrotnie „Timmer1” zd2 co spowoduje natychmiastowe przeniesienie i utworzenie nowego suba. Teraz ten czas musimy gdzieś pokazać. Aktualny czas wstawimy do label2, aby pokazac wam jak można zrobić to w textboxie i w formie label dodaliśmy textboxy i labele. w „Label1” pokażemy tylko minuty w „textbox1” sekundy a w „label3” godziny Jeśli nie chcecie aby te elementy były widoczne w waszym projekcie znajdzcie dla każdego z elementów w Properties opcje visible i zmieńcie ją na false.

W „Label2” można użyć również kodu:

Sprawdzamy czy nasze zegary działają:

zd4

Najłatwiejszą część mamy za sobą. Teraz musimy zrozumieć jak przedstawiana jest godzina w wersji binarnej:

zd5Naszym zadaniem jestrz przedstawienie aktualnej godziny z systemu 10-tnego na system 2-jkowy. Każdej liczbie dziesiętnej dopasowujemy układ, tak jak na obrazku. Aby nasz zegar był dynamiczny musi reagować na zmiany zachodzące w labelach i textboxie. Osiągamy to poprzez dwukrotne kliknięcie na textbox i otrzymamu „Suba” „Private Sub TextBox1_TextChanged” a dla labelów poprzez znalezienie w zakładce Events: zd6

Osiągamy tym coś w tym stylu:

zd7Zaczniemy od textboxu gdyż tutaj sprawa jest prosta, nie trzeba nic przekształcać bo program wie, że to co jest w textboxie jest w formie string. A więc zaczynamy. Będziemy potrzebowali stworzyć dwa warunki „if” (czyli takie „jeżeli” coś sie stanie to zrób to tamto :P) dla przedstawienia sekund:

zd8Robimy taki warunek:

[notice]Jeśli godzina w textboxie jest = 01 lub textboxie jest = 11  wtedy pokoloruj nasz panel 5 na czerwono[/notice]

a dla dziesiątek:

[notice]Jeśli godzina w textboxie jest = 10 i textboxie jest < 20   wtedy pokoloruj nasz panel 9 na czerwono[/notice]

Jak to wygląda w praktyce:

DarkRed to kolor który wybrałem jako reprezentujący aktualną cyfre, CadetBlue to kolor tła. Dla dziesiątek:

Troche tego jest ale prosze się nie przerażać

z9

Najlepiej skopjować sobie kod z gotowego programu udostęnionego poniżej ale ja proponuje trochę się pomęczyć i samemu pokombinować. gdy dodamy nasz kod, sekundy powinny sie zacząć poruszać:zd10

zd11

Jeśli chcielibyśmy wykorzystać do tego informacje z elementu „Label” należy najpierw pobrać tą informacje i przekształcić ja w formę string, robimy to poprzez dodanie na wstępie naszej pętli formuły:

co spowoduje przekształcenie wartości w elemencie „label” na typ string. Gdy to zrobimy tworzymy warunek „if” tak jak wyżej:

Ważnym elementem jest tutaj przekształcenie naszych dziesiątek, wygląda ono następująco:

Do naszej zmiennej „mm” przechowującej wartość z elementu label musimy dodać „.ToString” oczywiście możemy nazwać sobie tą zmnienna jak chcemy nie musi być „mm”

kiedy już dodamy wszystko, wyglądać to będzie następująco:

zd12

Trochę tego dużo ale warto sobie to samemu wprowadzić aby zrozumieć działanie tego kodu.

Odpalamy i sprawdzamy czy wszystko dziala:

zd13Powinno być tak jak wyżej. Myślę, że bez dodawanie „.tostring” do „mm” też powinno działać. Godziny zostawiam wam do zrobienia samodzielnie. Jeśli są jakieś błędy to przepraszam, jestem tylko człowiekiem. Tak jak zawsze program do pobrania stąd: bin zeg

 

Ważna uwaga aby nasz czas przedstawiany był w formie „13” a nie „01” należy na początku użyć dużych liter „HH”

[warning]

[/warning]

Przepraszam za kłopot

 

Permalink do tego artykułu: https://visualmonsters.cba.pl/zegarek-binarny/

Dodaj komentarz

Twój adres email nie będzie publikowany.