Niezrozumiałe zachowanie Xcontrol

Sprawy związane z interfejsem użytkownika - kontrolki, wskaźniki, wyświetlacze, wykresy oraz inne zagadnienia tego typu...
Awatar użytkownika
mariuszl2
Posty: 17
Rejestracja: 05 lip 2011 11:14
Wersja środowiska: LabVIEW 2012
Lokalizacja: PolSl

Niezrozumiałe zachowanie Xcontrol

Post autor: mariuszl2 » 19 sie 2012 09:36

Mam problem ze swoją XControl. Kontrolka składa się z suwaka i przycisku. Przeciągnięcie suwaka w górę powinno dać na wyjściu kontrolki TRUE, tak samo jak przyciśnięcie przycisku - problem ten mam opanowany. Jednak kontrolka, gdy zostanie włączona i suwak jest w pozycji górnej to daje się wyłączyć poprzez kliknięcie w obszar kontrolki, pomimo, że w evencie "mouse down ?" za pomocą opcji Discard odfiltrowuję tą zmianę. Powinno to nastąpić dopiero po przeciągnięciu suwaka w dół.
Wie ktoś jaka może być przyczyna takiego zachowania?
Dodam, że próbowałem na najróżniejsze sposoby oprogramować tą kontrolkę, jednak zawsze występuje ten błąd, że jeśli kliknie się włączoną kontrolkę to się ona wyłącza. Gdy jest wyłączona i się ja klika to tak jak powinna nie zmienia stanu, dopiero po przeciągnięciu myszą w górę.
Załączniki
Kontrolki.rar
(122.8 KiB) Pobrany 252 razy

PiDi
Posty: 620
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice
Has thanked: 3 times
Been thanked: 3 times

Re: Niezrozumiałe zachowanie Xcontrol

Post autor: PiDi » 19 sie 2012 10:18

To wyłączenie kontrolki następuje w evencie "Vertical Point Slide, Pane - Mouse Up". To, że robisz discard na Mouse Down nie oznacza, że zdarzenie odkliknięcia nie zostanie wyłapane.

Inna (niezwiązana) sprawa: do zapamiętywania stanu kontrolki służy State.ctl, który w Facade przekazywany jest jako Display State In/Out. Te zmienne lokalne i "sztuczne" kontrolki są zupełnie niepotrzebne i zaciemniają program (jeszcze inna sprawa, że nazwanie ich Flag 1 i Flag 2 zupełnie nic nie mówi). W momencie, kiedy zmieniasz jakąś wartość w stanie, trzeba ustawić flagę "State Changed?" w klastrze Action (tam, gdzie jest "Data changed?").
ObrazekObrazekObrazekObrazek

Awatar użytkownika
mariuszl2
Posty: 17
Rejestracja: 05 lip 2011 11:14
Wersja środowiska: LabVIEW 2012
Lokalizacja: PolSl

Re: Niezrozumiałe zachowanie Xcontrol

Post autor: mariuszl2 » 19 sie 2012 11:51

Wielkie dzięki PiDi :ymhug: ! Nareszcie rozumiem jak dokładnie tych XControlek używać :) Problemy jakie miałem z tą kontrolką wydają się teraz banalne, a kod dużo bardziej przejrzysty.

Awatar użytkownika
mariuszl2
Posty: 17
Rejestracja: 05 lip 2011 11:14
Wersja środowiska: LabVIEW 2012
Lokalizacja: PolSl

Re: Niezrozumiałe zachowanie Xcontrol

Post autor: mariuszl2 » 21 sie 2012 09:49

Nie chcę zakładać nowego tematu dotyczącego tej samej kontrolki wiec pisze tu:
Co zrobić by wyzerować kontrolkę wtedy, kiedy podczas zmieniania jej stanu (przeciągania myszą) wyjedziemy poza obszar kontrolki?
W wysłanym przeze mnie przykładzie gdy przeciąga się suwak do góry, zmienia on kolor w momencie, w którym przeciągnęło się go odpowiednio wysoko, co sygnalizuje nam, że można go już puścić i nastąpi przełączenie stanu. Jeśli jednak zamiast puścić wtedy tą kontrolkę wyjedzie się przytrzymaną myszą poza jej obszar, to kontrolka się wiesza.
Próbowałem to zrobić poprzez event mouse leave ale nie ma wogóle reakcji.
Jakieś pomysły?

Awatar użytkownika
wino
Posty: 548
Rejestracja: 23 gru 2005 00:00
Wersja środowiska: Nie mam LabVIEW
Lokalizacja: Kraków

Re: Niezrozumiałe zachowanie Xcontrol

Post autor: wino » 21 sie 2012 21:59

Musisz to zdarzenie obsłużyć poza kontrolką w zewnętrznej strukturze Event.

ODPOWIEDZ