Strona 1 z 1

Niezrozumiałe zachowanie Xcontrol

: 19 sie 2012 09:36
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ę.

Re: Niezrozumiałe zachowanie Xcontrol

: 19 sie 2012 10:18
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?").

Re: Niezrozumiałe zachowanie Xcontrol

: 19 sie 2012 11:51
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.

Re: Niezrozumiałe zachowanie Xcontrol

: 21 sie 2012 09:49
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?

Re: Niezrozumiałe zachowanie Xcontrol

: 21 sie 2012 21:59
autor: wino
Musisz to zdarzenie obsłużyć poza kontrolką w zewnętrznej strukturze Event.