Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Dziwne zjawisko
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004
Dziwne zjawisko

Witam

Zrobiłem dla swoich potrzeb własnego checkboxa, który może być transparentny i mam pewien problem.

Otóż mam Tabstrip i np. dwie zakładki, na każdej znajduje się checkbox (oba są w tym samym miejscu na odpowiedniej zakładce). I problem jest taki:

Gdy klikam na checkboxa na pierwszej zakładce drugi (niewidoczny checkbox) także zostaje tak jakby kliknięty - myślę że kapujecie

O co tu chodzi - przecież drugi checkbox jest niewidoczny to jak może przypisywać sobie zdarzenie kliknięcia o_O ??

Chodzi tu pewnie o własciwość transparent.

P.S. Jak sprawdzić czy kontrolka jest widoczna na formie w danej chwili


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

03-04-2005 16:57
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Znalazłem funkcję:

Declare Function IsWindowVisible Lib "user32" Alias "IsWindowVisible" (ByVal hwnd As Long) As Long

Trzeba sprawdzić


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

03-04-2005 17:24
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

No i nic z tego bo ta funkcja odczytuje właściwość Visible


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

03-04-2005 20:18
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
JoFerrari




Typ: neutral
Postów: 75
Zarejestrowany: Apr 2003

Obiekt transparenty z wlasciwoscia opacity 0% to nie to samo co visible=false. Mozna go kliknać

Mysle ze w tym problem, bo oczywiscie jest ze jesli 2 checki sa w tym samym miejscu jeden ma visible=false a drugi true to klikasz tylko jednego.. korzystalem z tego wielokrotnie

05-04-2005 14:48
Pokaż profil JoFerrari  Wyślij email do JoFerrari   
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

No to jak go rozwiązać - np. gdy mamy dwa labele które mają jakiś wspólny region, to gdy klikamy w ten wspólny region, zostaje rozpoznany ten label, który jest na wierzchu a jak to zrealizować w swojej kontrolce.

A pisząc "niewidoczny" miałem na myśli, że jest np. przykryty przez inną kontrolkę

A tak na marginesie to pytanie o to jak sprawdzić czy kontrolka jest widoczna czy nie nie miało nic wspólnego z pytaniem o transparencję kontrolki.

[Post edytowany dnia 05-04-2005 15:00 przez DJK]


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

05-04-2005 14:58
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

Darku, jeśli tak masz na imię ?

Nie wiem jak masz zaprojektowną tę kontrolkę, nie projektowałam też akurat transparentnej kontrolki, ale na stronie http://www.developerfusion.com/scripts/print.aspx?id=1661 ; jest notatka pt. "Transparent Controls" (http://www.developerfusion.com/show/1661/8/) , tam jest poruszany chyba ten problem zerknij ?

[Post edytowany dnia 05-04-2005 20:27 przez karolinavb]


_____________________________________________
Karolina

05-04-2005 20:21
Pokaż profil karolinavb  Wyślij email do karolinavb   
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

No już zdążyłem obadać ten artykuł ale nie pomógł mi bo żeby rozwiązać problem musiałbym zmienić właściwość Windowless na True a nie mogę bo na kontrolce mam PictureBoxa.


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

06-04-2005 00:08
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

Darku (żeby kontynuować....)
Jeśli możesz i masz ochotę prześlij może ten projekt kontrolki, może ja spróbuję ?


_____________________________________________
Karolina

08-04-2005 07:25
Pokaż profil karolinavb  Wyślij email do karolinavb   
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Nie nazyam się Darek

Ogólnie to wiem w czym tkwi problem - kontrolka zawiera Timer i sprawdza region, w którym znajduje się kursor ale sama zobaczysz co i jak.

Ok prześlę

[Post edytowany dnia 08-04-2005 10:37 przez DJK]


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

08-04-2005 10:30
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Hmmm - Karolino ale jest pewien problem, którego pewnie nie przewidziałaś. otóż ja wcześniej ustawiałem Focusa i wszystko było ładnie do momentu gdy kontrolki nie znalazły się na TABSTRIP - dwie zakładki, na każdej checkbox i tak ułożone żeby jedna była pod drugą. Jeden checkbox może być nawet standardowy.

Poza tym  procedury Timera nie mogę uzależnić od FOCUSA bo nie wiem czy zauważyłaś ale moja kontrolka ma taką właściwość Style - w XP Style kontrolka jest podświetlana gdy kursor jest nad nią a nie musi mieć fokusa.


Mam nadzieję ze rozumiesz

[Post edytowany dnia 09-04-2005 10:06 przez DJK]


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

09-04-2005 10:03
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

1. Kontrolka Tab Strip nie jest pojemnikiem obiektowym , o ile mi wiadomo więc nie mogłeś na niej umieścić swojej kontrolki. Obiekty dostępne dla danej zakładki określa się przez ustawianie ich właściwości Visible, np:

http://www.coderscity.pl/no-vb4all/teoria/iso2/kontrol/tabstrip.htm

2.
wszystko było ładnie do momentu

Ta kontrolka ułożona 1-dna nad 2-gą na pustej formie też nie działa prawidłowo. Zdarzenie Click, a podświetlenie to 2 sprawy. Zgodnie z Twoim kodem w Timerze jest zmieniana również właściwość Value (a zmiana ta wywołuje zdarzenie Click ) i wydaje mi się, że to powinno wobec tego  zależeć od Focusa, a Focus uzyskuje w  momencie kliknięcia w kontrolkę... ?
I jeśli jednak masz na myśli Microsoft Tabbed Dialog Control, to po zmianie w Timerze na chociażby takiej tylko

If m_Focus = True Then
    If Value = Checked Then
          Value = Unchecked
    Else
          Value = Checked
    End If
End If

podświetlanie jest i zdarzenie Click jest w miarę ok , po umieszczeniu 2 kontrolek w zakładkach kontrolki Tabbed i wydaje mi się, że w tym kierunku dalej trzeba iść.

[Post edytowany dnia 09-04-2005 16:47 przez karolinavb]


_____________________________________________
Karolina

09-04-2005 16:31
Pokaż profil karolinavb  Wyślij email do karolinavb   
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Ehhh - wiem ze Tabstrip nie jest pojemnikiem ale wystarczy postawić dwie ramki i na nich checkboxy -to miałem na myśli

Zdarzenie klik jest wywoływane tylko wtedy gdy zmieniona zostanie wartość Value.

A takie pytanie - jak mam niby określić Fokusa jak kontrolka jest transparentna i gdy kliknę w transparentne pole nie otrzymam zdarzenia "UserControl_GotFocus"

Fokusem mogę sterować tylko poprzez wywołanie "Usercontrol.SetFocus" albo API SetFocus czy PutFocus , które musi być umieszczone w Timerze bo nie widzę innej możliwości (nie biorę pod uwagę Subclassingu - to nie wchodzi w grę ) i ustawiane gdy klawisz myszki jest wciśnięty.

I Teraz tak: gdy kontrolki są w różnych miejscach i nie mają wspólnych regionów działa OK ale co jeśli mają wspólny region (w najgorszym przypadku jedna jest na drugiej). Wtedy chodzą dwa Timery i oba wyłapują zdarzenie kliknięcia w kontrolkę

I Co teraz ?????? Fokusa dostanie pierwsza a następnie druga kontrolka i obie zmienią wartości.

A co do podświetlenia - to przecież podświetlenie w XP nie wymaga fokusa chociaż to jest akurat najmniejszym problemem bo nie zmienia wartości Value

[Post edytowany dnia 09-04-2005 17:08 przez DJK]


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

09-04-2005 17:04
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
Wszystkich odpowiedzi: 11 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1