Strona 1 z 1

Menu użytkownika

: 03 lis 2013 00:10
autor: AllanBradley
Witam .
Zastanawiam się w jaki sposób stworzyć coś w rodzaju GUI tak jak na zdjęciu .
Może mnie ktoś poprawić czy idę dobrym tropem wykorzystując OPEN VI REFERENCE .
Działa to tak ,że przechwytuje zdarzenie z kliknięcia i w ten sposób otwieram nowy VI.

Pozdrawiam i liczę na pomoc.

Re: Menu użytkownika

: 03 lis 2013 00:12
autor: AllanBradley
Taki sposób działa ale bardziej chodzi mi o odpowiedź czy takie rozwiązanie jest powszechnie stosowane.

Menu użytkownika

: 03 lis 2013 09:23
autor: milten
Jest dobry.
jedyne co bym zmienił, to uruchamianie tego VI-a na samym początku aplikacji i ukryć go a w zdarzeniu tylko pokazywać okno.
W twoim przypadku jeżeli w tym VI-u będziesz miał inicjalizacje, która potrwa na przykład 3 sekundy, to użytkownik może pomyśleć, że aplikacja się zacięła i będzie dalej klikał.
Oczywiście jak użytkownik będzie chciał zamknąć okno, to musisz przechwycić zdarzenie i je tylko ukryć.

Re: Menu użytkownika

: 03 lis 2013 12:40
autor: AllanBradley
milten pisze: Jest dobry. jedyne co bym zmienił, to uruchamianie tego VI-a na samym początku aplikacji i ukryć go a w zdarzeniu tylko pokazywać okno.
Nie za bardzo zrozumiałem możesz sprecyzować ?

Drugie pytanie:
Jeśli zrobię aplikację w ten sposób to po mimo przejścia do następnego podprogramu main.Vi ( ten z wyborem menu )nadal jest otwarty . Przy próbie zamknięcia go
za pomocą Open VI Reference -> invok node -> close pojawia się Error iż nie można zamknąć głównego okna. Jest jakiś sposób na to ???

Re: Menu użytkownika

: 03 lis 2013 15:28
autor: milten
Szybciej będzie to wyjaśnić na przykładzie.

Jako, że na końcu programu okno.vi jest zamykany w sposób brutalny (Abotr VI), to musisz pamietać o tym, że żadna z referencji itp nie może być otwarta w okno.vi, bo po abort będą one nadal w pamięci, czego nie chcesz :P
Możesz dodać w komunikacji pomiędzy tymi dwoma oknami jakies polecenie, które będzie kończyć tą pętle while (mi chodziło o koncept a nie o 100% poprawności programowania). Wtedy nie musisz robić już Abort VI.

Re: Menu użytkownika

: 03 lis 2013 18:44
autor: AllanBradley
Dzięki za zainteresowanie.
Nadal mam kilka pytań :

1) W jakim celu użyłeś abort VI ?
2) Dwukrotne użycie Build Path Function w main.vi jest konieczne ?
3) Co zrobić by po otwarciu okna.vi zamknąć całkowicie main.vi tak by nie było go widać na pasku skrótów ( tak jak to wygląda w normalnych aplikacjach ).

Pozdrawiam.

Menu użytkownika

: 03 lis 2013 20:51
autor: milten
1. Abort VI użyłem, żeby zakończyć okno.vi. Jest tam nieskończona pętla i tylko w taki sposób sa się zamknąć tego VI-a jak się go uruchomi. Lepszym wyjściem było by przekazanie do okno.vi polecenia do zakończenia (na przykład kolejką).
2. Jeden to jest Strip Path a drugi to Build Path. W pierwszym wyciągam ścieżkę do folderu w którym znajdują się pliki, a w drugim robię ścieżkę do okno.vi. To jest chyba najlepszy sposób na zrobienie czegoś takiego. Najlepiej zobacz co idzie w którym kablu, to powinieneś wiedzieć o co dokładnie chodzi.
3. Przekopiuj to co znajduje się w Evencie Panel Close? w okno.vi i będzie działać. Ale i tak musisz zamknąć jakoś tego VI-a, bo będzie siedział w pamięci cały czas.

Hmm może opisz dokładniej co twoja aplikacja powinna robić. Zakładałem, że chcesz zrobić po prostu okno z osobnymi ustawieniami, ale widzę, że nie o to chodzi.

Re: Menu użytkownika

: 03 lis 2013 23:46
autor: AllanBradley
Po prostu chciałem zrobić aplikację z menu użytkownika ale nie chcę by przy wybieraniu odp. opcji w zakładkach gromadziły się nie zamknięte okna ,tylko w miarę możliwości labview wyglądało to na płynne przejścia tak jak to jest np. w smartphonach , aplikacjach pisanych w C++ itd.

Menu użytkownika

: 04 lis 2013 00:39
autor: milten
W tym przypadku lepiej sprawdzi się Tab Control (Modern->Containers). Wciśnięcie przycisku powoduje zmianę zakładki. Znacznie łatwiejsze i całe GUI masz w jednym VI-u.

Re: Menu użytkownika

: 04 lis 2013 19:44
autor: AllanBradley
Dzięki . Faktycznie tab control sprawdzi się dużo lepiej. Czasami mam wrażenie ,że w labview wszystko jest gotowe tylko problem polega na znalezieniu tego. Po prostu zapomniałem o istnieniu tego contenera.