Professional Documents
Culture Documents
1. Otworzyć LabVIEW 2012 i utworzyć nowy VI. Zapisać go pod dowolną nazwą
(przykładowo XP Benchmark).
2. Stworzyć następujący Panel Czołowy aplikacji, który posłuży do zadawania interwału
czasowego odmierzanego przez program oraz prezentacji uzyskanych wyników.
Umieścić wykres Waveform Chart. Zmienić jego nazwę na Wykres czas [ms].
Następnie wybrać z jego menu kontekstowego Visible → Caption. Ustawić nazwę
wyświetlaną dla użytkownika (Caption), jako Wykres pomiaru czasu.
2
Upewnić się, że opcja automatyczne skalowanie osi X jest wyłączona (X Scale →
Autoscale X).
Oś rzędnych wykresu nazwać Czas [ms], zaś odciętych Ilość iteracji.
Dodać wskaźnik numeryczny służący do wyświetlania rzeczywistego opóźnienia i
nazwać go (Label) Czas [ms]. Nazwę wyświetlaną tylko na Panelu Czołowym
(Caption) ustawić na Czas wykonywania operacji [ms].
Umieścić kontrolkę numeryczną, która posłuży do określania ilości pomiarów. Nadać
jej nazwę Ilość pomiarów. Zmienić typ tej zmiennej na całkowitoliczbowy, 32-bitowy
(I32).
Na zakończenie umieścić na Panelu Czołowym przycisk Stop. Powiększyć jego
rozmiar, aby kliknięcie go było dla użytkownika łatwiejsze. Przypisać mu odpowiedni
tryb pracy – przycisk ten posłuży do awaryjnego zatrzymania pętli głównej.
3. Przejść do okna Diagramu i utworzyć kod służący do obliczania czasu, jaki rzeczywiście
upłynął od rozpoczęcia odliczania ustawionej ilości czasu do jej zakończenia.
3
Dodać kolejną ramkę, która posłuży do obliczenia opóźnienia, które faktycznie
wystąpiło podczas wykonywania programu. W tym celu kliknąć prawym przyciskiem
myszy na prawą krawędź ramki zawierającej funkcję Wait (ms) i z menu
kontekstowego ponownie wybrać opcję Add Frame After.
We wnętrzu nowo utworzonej ramki umieścić ponownie funkcję Tick Count (ms),
która zwróci bieżący stan licznika czasu. Następnie obliczyć rzeczywisty czas
wykonywania funkcji Wait (ms), jako różnicę (Subtract) bieżącego stanu licznika i
wartości „zatrzaśniętej” w pierwszej ramce przed wywołaniem funkcji wstrzymującej
pracę programu na 50 milisekund.
Wynik operacji dołączyć do wykresu Wykres czas [ms] oraz kontrolki numerycznej
Czas [ms].
4. Pojedynczy pomiar w żaden sposób nie może świadczyć o dokładności odmierzania
odstępów czasu przez system operacyjny Windows XP. Aby móc oceniać właściwości
należy dysponować większą ilością danych. Najłatwiejszym sposobem jest naturalnie
zastosowanie pętli For (ilość iteracji jest znana przed uruchomieniem pętli), która
pozwoli wielokrotnie wykonać ten sam fragment kodu.
4
Do terminalu określającego ilość iteracji dołączyć kontrolkę numeryczną Ilość
pomiarów.
W menu kontekstowym pętli zaznaczyć opcję Conditional Terminal.
Do terminalu warunkowego zakończenia pętli For dołączyć przycisk Stop.
5. Aby ułatwić użytkownikowi pracę z programem dodane zostaną funkcje czyszczenie
zawartości wykresu w momencie uruchomienia programu oraz zmiany jego koloru, gdy
mierzone wartości przekroczą 60 milisekund, czyli o 20% więcej niż zadane 50 ms.
Z menu kontekstowego terminalu wyjściowego Wykres czas [ms] wybrać kolejno
opcje: Create → Property Node → History Data (ostatnia pozycja).
Umieścić utworzoną instrukcję modyfikującą historię wykresu poza pętlą For.
Z jej menu kontekstowego wybrać opcję Change All To Write. Pozwoli to przypisać
odpowiednią wartość do historii wykresu.
Z menu kontekstowego wejścia History wybrać opcję Create → Control. Spowoduje
to kasowanie zawartości wykresu po każdym ponownym uruchomieniu programu.
Ponownie utworzyć Property Node, tym razem służący do zmiany koloru wykresu.
W tym celu wybrać ponownie z menu kontekstowego Wykres czas [ms] następujące
opcje Create → Property Node → Plot → Plot Color.
Korzystając z funkcji Select oraz Greater? utworzyć kod modyfikujący kolor
wykresu w zależności od wartości rzeczywistego opóźnienia. Dołączyć dwie stałe
typu Color Box (Programming → Graphics & Sound → Picture Functions) do
odpowiednich wejść funkcji Select.
6. Powrócić do Panelu Czołowego i uruchomić program, aby wykonał 100 pomiarów czasu.
7. Wyświetlanie danych w postaci wykresu jest na pewno dużo czytelniejsze niż
analizowanie tabel zawierających dane pomiarowe. Jednakże, ze względu na dużą
przypadkowość uzyskiwanych wyników analiza ilościowa takiego wykresu jest
utrudniona. Warto w takiej sytuacji zastosować histogram.
5
8. Na Panelu Czołowym umieścić wykres XY Graph przeznaczony do prezentowania
histogramu.
Nadać wykresowi nazwę Histogram, osi odciętych Przedziały, zaś rzędnych Ilość.
Otworzyć okno właściwości wykresu i zmodyfikować zakładkę Plots zgodnie z
przedstawionym rysunkiem.
9. Jako aktywne ustawić okno Diagramu i uzupełnić program o następujący fragment kodu.
6
Poza pętlą For umieścić funkcję Histogram.vi (Mathematics → Probability &
Statistics). Do wejścia intervals dołączyć stałą numeryczną równą 10. Dzięki temu
uzyskane wyniki zostaną podzielone na 10 podprzedziałów.
Utworzyć tunel wyjściowy pętli For z indeksowaniem, dzięki temu powstanie tablica
wyników pomiarów.
Utworzony tunel wyjściowy połączyć z funkcją To Double Precision Float rzutującą
dowolny typ na typ zmiennoprzecinkowy (double), gdyż na tym typie danych operuje
funkcja Histogram.
Wyjście funkcji To Double Precision Float dołączyć do wejścia X funkcji
histogram.
Umieścić w kodzie funkcję Bundle, która posłuży do utworzenia klastra złożonego z
przedziałów (oś odciętych) oraz liczebności poszczególnych przedziałów (oś
rzędnych).
Do pierwszego wejścia funkcji Bundle dołączyć wyjście X Values funkcji
Histogram, zaś do drugiego wyjście Histogram: h(x).
Wyjście funkcji Bundle dołączyć do terminalu wyjściowego Histogram.
10. Ocena dużych zbiorów danych nawet przy pomocy wykresów jest trudna zwłaszcza, jeśli
konieczne jest ich wzajemne porównanie. Zastosowanie histogramu w pewnym
momencie może okazać się zawodne. W takiej sytuacji warto wprowadzić skalarne
wskaźniki oceniające dokładność pomiaru, do najpopularniejszych należą:
a) średnia,
b) mediana,
c) odchylenie standardowe,
d) wartość maksymalna,
e) wartość minimalna,
f) maksymalny jitter.
7
Potrzebne funkcje można znaleźć w palecie Programming → Array. Warto skorzystać z
polimorfizmu podstawowych funkcji matematycznych (Programming → Numeric).
8
13. Uruchomić program i zweryfikować jego działanie. Wykonać następujące testy
a) Uruchomić menadżer zadań Windows XP (Ctrl + Alt + Del) i zmienić priorytet
procesu.
b) Po uruchomieniu programu zwiększyć obciążenie procesora wykonując dodatkowe
zadania (uruchomienie dodatkowego programu, poruszanie oknem, etc.).
c) Dodać w kodzie programu równoległą pętlę, która będzie uruchamiana razem z pętlą
pomiarową i będzie wykonywać o połowę mniej iteracji.
d) Zmienić odmierzany czas z 50 milisekund na 5, a następnie 100 milisekund.
Aby skopiować zawartość wykresu należy z jego menu kontekstowego wybrać opcję
Data Operations → Copy Data.
Reasumując, system Windows XP nie nadaje się do realizacji krytycznych czasowo zadań i
nie należy się tu dziwić, gdyż nie został do tego celu zaprojektowany. Naturalnie
zastosowane środowisko programistyczne oraz język programowania nie mają żadnego
wpływu na przydział czasu dla poszczególnych zadań przez scheduler systemu
operacyjnego. Mimo to można przyjąć, że pętle programowe o okresie pracy równym 100
milisekund (lub więcej) będą wykonywane z dużą powtarzalnością, przy jednoczesnym
wyeliminowaniu czynników spowalniających pracę systemu operacyjnego.
9
Ćwiczenie 2 – Moduł i argument wektora - Decorations
Cel: Poznanie sposobów tworzenia czytelnego graficznego interfejsu użytkownika.
Stworzenie programu służącego do obliczania długości oraz argumentu
wektora.
Czasem zamiast przedstawienia wektora w postaci współrzędnych jego początku oraz końca,
wygodniej jest dysponować jego długością oraz kątem, jaki tworzy on z dodatnią półosią OX
(rozważany będzie wektor na płaszczyźnie XY).
Y
y2
v 𝒗 = (y2 − y1 )2 + (x2 − x1 )2
y1 arg 𝒗 = arctg2(y2 − y1 , x2 − x1 )
x1 x2 X
1. Otworzyć LabVIEW 2012 i utworzyć nowy VI. Zapisać go pod dowolną nazwą
(przykładowo Wektor).
2. W Panelu Czołowym wybrać paletę Controls → Modern → Decorations
10
Skorzystać z dowolnych elementów dekoracyjnych tak, aby użytkownik mógł szybko
zorientować się w funkcjonowaniu programu.
Podczas tworzenia wizualizacji warto korzystać z funkcji Reorder.
11
Na zakończenie dodać przycisk Stop. Posłuży on do zatrzymania pętli głównej
programu, dlatego też należy ustawić odpowiedni tryb pracy. Jego nazwę zmienić na
STOP [Esc].
Zastosowanie skrótu klawiszowego Ctrl + M pozwala podejrzeć jak wygląda Panel Czołowy
podczas wykonywania aplikacji, przy czym program nie jest uruchamiany. Jest to bardzo
przydatne, w początkowej fazie tworzenia program, gdy utworzony został tylko Panel
Czołowy.
12
W oknie VI Properties wybrać kategorię Execution i zaznaczyć opcję Preallocated
clone reentrant execution – zaznaczenie tej opcji pozwala uzyskać równoległe
wykonywanie funkcji, jeśli występuje w kilku miejscach. Zaznaczyć opcję Inline
subVI into calling – poskutkuje to przyspieszeniem wykonywania programu, gdyż
funkcja nie będzie wywoływana ponownie przy kolejnych iteracjach pętli poprzez skok
do odpowiedniego miejsca w pamięci programu. Funkcja z atrybutem inline zostanie
umieszczona bezpośrednio wewnątrz kodu programu.
13
Ćwiczenie 3 – Lotto – tworzenie opisu programu.
Cel: Poznanie metod ułatwiania pracy z aplikacją przez użytkownika oraz dokumentowania
kodu programu.
14
Kliknąć dwukrotnie w pustym miejscu na Panelu Czołowym i umieścić napis
„Losowanie LOTTO”.
Korzystając z narzędzia służącego do edycji tekstu
15
W analogiczny sposób wprowadzić opisy oraz wskazówki dla pozostałych dwóch
obiektów na Panelu Czołowym.
Dodać na Panelu Czołowym komentarz opisujący pokrótce działanie programu.
3. Przejść do Diagramu i dokonać modyfikacji kodu programu mających na celu poprawę
jego czytelności.
16
Zmodyfikować typ stałej liczbowej dołączonej do wejścia element funkcji
Initialize Array na U8. Wyświetlić nazwę tej stałej (Visible → Label) i zmienić ją
z y na Wartość początkowa.
Wyświetlić nazwę stałej dołączonej do wejścia dimension size funkcji Initialize
Array i zmienić ją z dimension size na Rozmiar tablicy.
Do wyjścia funkcji Round Toward +Infinity dołączyć funkcję To Unsigned Byte
Integer dokonującą konwersji do typu U8.
5. Fragment kodu losujący liczbę od 1 do 49 warto zamknąć w postaci subVI, gdyż operacja
losowania liczby z danego przedziału jest dość powszechna podczas programowania i
może przydać się w przyszłości.
Zaznaczyć, wykorzystując klawisz Shift, fragment kodu odpowiedzialny za
losowanie (oprócz stałej liczbowej równej 49).
17
Pomarańczowe tło ikony świadczy o tym, iż funkcja operuje liczbami
zmiennoprzecinkowymi.
Z menu głównego wybrać opcję File → VI Properties, po czym kategorię
Documentation. W polu VI description wpisać opis działania funkcji, przykładowo:
„Funkcja zwracająca liczbę losową (wyjście rand) z dowolnego zakresu od 1 do n
(wejście n)”. Opis ten będzie widoczny w pomocy kontekstowej.
Pola Help tag oraz Help path służą do dodania opisu funkcji do głównej pomocy.
18
W analogiczny sposób przypisać kolor biały dolnemu kwadratowi (odpowiada za
kolor tła)
19
„1. Utworzenie 6-elementowej tablicy liczb typu U8. Zostanie zapełniona wylosowanymi
liczbami.
2. Losowanie liczby z zakresu od 1 do 49.
3. Sprawdzenie, czy wylosowana liczba znajduje się już w tablicy, wynik tej funkcji
określa, który przypadek struktury Case zostanie wykonany.
4. Jeśli wylosowano nową liczbę to jest ona dopisana do końca tablicy i licznik
wylosowanych liczb jest inkrementowany. W przeciwnym razie tablica nie jest
modyfikowana.
5. Wyświetlenie zawartości tablicy po każdej iteracji pętli.
6. Zatrzymanie pętli następuje, gdy wylosowano 6 liczb, lub wciśnięto klawisz Stop.”
Warto komentować tylko główne fragmenty programu, pomijając kwestie oczywiste, takie
jak np. wyświetlanie bieżącego indeksu iteracji pętli.
9. Wylosowanie 6 liczb spośród 49 nie wymaga wielu iteracji pętli, dlatego też wprowadzone
opóźnienie można usunąć. Jednakże opóźnienie można wykorzystać do samodzielnego
debuggowania programu, zatem może się przydać w przyszłości. W językach tekstowych
stosuje się specjalne sekwencje znaków (// lub /* */ w C/C++, bądź % w Matlabie), aby
zachować fragment kodu „na później” bez jego wpływu na działanie programu.
W LabVIEW służy do tego struktura Diagram Disable Structure (Programming →
Structures).
Wybrać tę strukturę i obwieść nią funkcję Wait Until Next ms Multiple wraz z
dołączoną do niej stałą. W ten sposób pozostanie ona w kodzie programu, jednak nie
będzie wykonywana po uruchomieniu programu.
Aby ponownie włączyć ten fragment kodu należy wybrać z menu kontekstowego tej
struktury opcję Enable This Subdiagram.
10. Zapisać program.
Kod należy dokumentować w trakcie jego tworzenia, gdyż w ten sposób nie zostanie pominięta
żadna istotna informacja. Co więcej, proces ten będzie zdecydowanie szybszy niż tworzenie
opisu kodu po utworzeniu programu.
20
Ćwiczenie 4 – Invoke Node
Cel: Poznanie metod modyfikacji wyglądu interfejsu użytkownika podczas uruchamiania
aplikacji.
Jak można było dotychczas zauważyć programy tworzone w LabVIEW podczas ich
wykonywania uruchamiane są w Panelu Czołowym. Aplikacja posiada domyślnie wszystkie
elementy związane z edycją graficznego interfejsu użytkownika (ang. Graphical User Interface)
programu zarówno w postaci paska narzędzi, edytora ikony i złącza subVI jak również menu
głównego. Naturalnie funkcje te są bardzo przydatne podczas edycji i testowania kodu programu.
Wielokrotnie może się okazać, że pozostawienie tych domyślnych ustawień wyglądu Panelu
Czołowego nie jest wskazane. Przyczyną takich sytuacji mogą być wymagania projektowe, które
zakładają by interfejs użytkownika był możliwie jak najprostszy i czytelny. W LabVIEW
programista może decydować jak będzie wyglądało okno programu po jego uruchomieniu.
Dodatkowo użytkownik może zdefiniować własne menu główne aplikacji. Wspomniane zmiany
okna Panelu Czołowego mogą zostać dokonane w sposób statyczny (ustawienie trwałe przed
uruchomieniem programu), jak również dynamiczny (w oparciu o techniki programistyczne).
TitleBarVisible – jeśli tej właściwości przypisano prawdę, wówczas widoczny jest pasek
tytułu aplikacji, w przeciwnym razie jest on niewidoczny.
1. Otworzyć LabVIEW 2012 i utworzyć nowy VI. Zapisać go pod dowolną nazwą
(przykładowo GUI).
2. Przykładowy Panel Czołowy, który należy utworzyć w kolejnych krokach ćwiczenia
przedstawiono na poniższym rysunku.
5. Korzystając z narzędzi Align (ang. wyrównać), Distribute (ang. rozmieścić) oraz Resize
(ang. zmień rozmiar) poprawić wygląd oraz rozmieszczenie utworzonego interfejsu
użytkownika.
6. Upewnić się, czy każda z kontrolek logicznych ustawiona jest w stan wysoki. Następnie
zaznaczyć wszystkie elementy na Panelu Czołowym i wybrać z menu głównego Edit →
Make Current Values Default.
7. Przejść do okna Diagramu i stworzyć kod programu z wykorzystaniem utworzonych na
Panelu Czołowym obiektów.
23
8. Obwieść pętlą While terminale wejściowe.
9. Utworzyć referencję do tworzonego VI. Pozwoli ona modyfikować właściwości oraz
korzystać z metod przypisanych dostępnych dla VI.
W tym celu z palety Application Control (Programming → Application Control)
wybrać element VI Server Reference. Jeśli nie przypisano mu do tej pory referencji
This VI, to należy go kliknąć i z menu kontekstowego wybrać This VI.
10. Zmodyfikować właściwość RunTransparently korzystając z funkcji Property Node.
Z menu kontekstowego referencji This VI wybrać następujące opcje: Create →
Property for VI Class → Front Panel Window → Run VI Transparently.
Utworzoną instrukcję Property Node umieścić poza pętlą While, po jej prawej
stronie. Następnie, z jej menu kontekstowego wybrać opcję Change All to Write, aby
móc zmodyfikować tę właściwość.
Do wejścia FP:RunTransparently instrukcji Property Node dołączyć stałą logiczną
prawda, zaś do wejścia reference – referencję This VI.
11. Utworzyć instrukcje Property Node służące do sterowania wyświetlaniem elementów
składowych Panelu Czołowego aplikacji.
Z menu kontekstowego referencji This VI wybrać następujące opcje Create →
Property for VI Class → Front Panel Window → Show Menu Bar. W ten sposób
powstanie instrukcja modyfikująca widoczność paska narzędzi. Utworzoną instrukcję
Property Node umieścić wewnątrz pętli.
24
Rozszerzyć w dół utworzoną instrukcję, aby pojawiły się dwie kolejne właściwości,
które będą modyfikowane.
Kliknąć na drugi element i wybrać z opcję Front Panel Window → Title Bar Visible.
Kliknąć na drugi element i wybrać z opcję Front Panel Window → Transparency.
Z menu kontekstowego utworzonej w ten sposób instrukcji Property Node wybrać
Change All to Write.
Połączyć odpowiednie logiczne terminale wejściowe z właściwymi wejściami
instrukcji Property Node,
Korzystając z funkcji Select przypisać do właściwość Transparency wartość 0
(wejście f) bądź 40 (wejście t) w zależności od stanu terminalu wejściowego.
Selekcja dokonywana jest przez kontrolkę logiczną Okno przezroczyste?.
12. Utworzyć instrukcję Invoke Node wywołującą metodę Center.
Z menu kontekstowego referencji This VI wybrać następujące opcje Create →
Method for VI Class → Front Panel → Center. W ten sposób powstanie instrukcja
wywołująca metodę - wyśrodkuj Panel Czołowy. Utworzoną instrukcję Invoke Node
umieścić wewnątrz pętli.
Obwieść instrukcję Invoke Node za pomocą Case Structure. Do wejścia selektora
przypadku dołączyć terminal Środek.
13. Korzystając z rejestru przesuwnego (Shift Register) utworzyć odpowiednia połączenia w
kodzie programu.
14. Stosując dowolną funkcję czasową dodać do programu opóźnienie wynoszące 50
milisekund.
15. Zatrzymanie pętli głównej programu uzależnić od kliknięcia przycisku Stop lub
wystąpienia błędu w programie (skorzystać z funkcji alternatywy logicznej (Or)).
16. Na zakończenie sygnał błędu połączyć z funkcją Simple Error Handler VI.
17. Zapisać i uruchomić program. Sprawdzić działanie stworzonego programu.
25
Po wybraniu z menu głównego File → VI Properties i następnie kategorię Window
Appearance. Dostępne są tam opcje służące do modyfikacji wyglądu Panelu Czołowego
podczas pracy programu.
26
Ćwiczenie 5 – Stoper – własna kontrolka
Cel: Utworzenie wskaźnika o spersonalizowanym wyglądzie.
Wybór kontrolek oraz wskaźników na Panelu Czołowym nie jest tylko ograniczony do
elementów dostępnych w bibliotekach wbudowanych w LabVIEW. Programista w prosty sposób
może szybko utworzyć własną kontrolkę poprzez modyfikację już istniejących. W ćwiczeniu
zostanie utworzony wskaźnik numeryczny o wyglądzie analogowego stopera.
2. Otworzyć LabVIEW 2012 i z menu głównego ekranu startowego wybrać opcję File → New….
Następnie zaznaczyć Custom Control z grupy Other Files i kliknąć OK. Zostanie otworzony
edytor kontrolek. Zapisać obecny stan pod dowolną nazwą (przykładowo Edycja stopera).
3. Umieścić w obszarze edycji wskaźnik numeryczny typu Gauge. Wywołanie palety kontrolek
przebiega identycznie jak w przypadku Panelu Czołowego.
27
4. Powiększyć wskaźnik, aby dopasować go do rozmiaru pliku graficznego.
5. Chwycić za podziałkę umieszczoną przy wartości 0 i obrócić skalę tak, aby podziałka ta
pokryła się z godziną 12.
6. W analogiczny sposób obrócić podziałkę przy wartości 10, aby pokryła się z zerem i nadal
pokrywała się z godziną 12.
7. Zmienić wartość 10 na 60.
28
8. Dwukrotnie kliknąć na wartość 2 i wpisać 5. W ten sposób zmieni się skok skali, który
odpowiada teraz skali zegarowej.
9. Zmienić nazwę obiektu z Gauge na Stoper i umieścić nad wskaźnikiem.
10. Następnie kliknąć ikonę opcji Change to Customize Mode. Spowoduje to rozbicie
wskaźnika na elementy składowe, takie jak m.in. wskazówka, tło, nazwa, wyświetlacz
numeryczny, etc.
11. Skopiować do schowka utworzony w programie Paint cyferblat Stopera.
12. Zaznaczyć wewnętrzny kwadrat klikając na dotychczasowe, białe tło wskaźnika.
29
Z menu kontekstowego wybrać opcję Import Picture From Clipboard.
30
15. Poskutkuje to przeniesieniem tła nad skalę.
31
17. Zapisać wskaźnik i zamknąć edytor kontrolek.
18. Utworzyć nowy VI i zapisać go (przykładowo pod nazwą Prosty stoper). Stworzony zostanie
prosty program, który będzie odmierzał jednosekundowe odcinki czasu i wyświetlać
odmierzony czas na stoperze.
19. Na Panelu Czołowym dodać utworzony wskaźnik analogicznie jak subVI, tj. wybrać opcję
32
i wskazać utworzony wskaźnik.
Można również przeciągnąć wskaźnik na Panel Czołowy z folderu, w którym został zapisany.
22. Przejść do okna Diagramu, gdzie stworzony zostanie następujący kod programu.
23. Przejść do Panelu Czołowego i dopasować rozmiar okna, aby znajdował się na nim tylko
stoper i przycisk Stop.
33
24. Następnie wybrać z menu głównego opcję File → VI Properties. W kategorii Window
Appearance zaznaczyć opcję Dialog. Dzięki temu po uruchomieniu programu oprócz obszaru
roboczego będzie widoczny tylko pasek tytułu.
25. W kategorii Window Run-Time Position w polu Position wybrać opcję Centered.
26. W kategorii Window Size dokonać następujących ustawień:
Kliknąć Set to Current Panel Size, wówczas zostanie zachowany bieżący rozmiar okna
Panelu Czołowego.
Zaznaczyć opcję Maintain proportions of window for different monitor resolutions, co
pozwoli zachować proporcje okna, przy uruchamianiu aplikacji na monitorach o innej
rozdzielczości.
27. Kliknąć OK, aby zatwierdzić dokonane zmiany.
28. Uruchomić program i sprawdzić jego działanie.
34
Zadania do wykonania
1. Zapoznać się z przykładem Tab Control Properties, działaniem zakładek i zastosowanych
właściwości tego obiektu poprzez Property Node.
2. Program z ćwiczenia 2 może posłużyć do obliczania argumentu i modułu liczby
zespolonej. Wystarczy wówczas przyjąć, że współrzędne x1 oraz y1 są równe zero, zaś y2
to część urojona, a x2 to część rzeczywista.
Dokonać odpowiednich modyfikacji kodu oraz Panelu Czołowego.
3. Gra Catch Me if You Can. Gra polega na wyświetlaniu w losowych położeniach na
Panelu Czołowym przycisku. Każde kliknięcie ma zwiększać licznik trafień. Gra ma
zakończyć się po zdobyciu 10 trafień, bądź kliknięciu przycisku Stop.
Skorzystać z modyfikacji następujących właściwości obiektu przycisk, poprzez
Property Node: Position → Top oraz Position → Left.
Skorzystać z funkcji Rand 1-n służącej do losowania liczb z zakresu od 1 do n,
aby wylosować przesunięcie w poziomie i pionie kontrolki.
4. Zmodyfikować program 5 tak, aby wyświetlane były minuty oraz sekundy, w postaci
wskaźników numerycznych.
35