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 »

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 565 razy
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Niezrozumiałe zachowanie Xcontrol

Post autor: PiDi »

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 »

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 »

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: 549
Rejestracja: 23 gru 2005 00:00
Wersja środowiska: Nie mam LabVIEW
Lokalizacja: Kraków

Re: Niezrozumiałe zachowanie Xcontrol

Post autor: wino »

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