Wygląd kontrolek na zablokowanym panelu

0

Witam !

W Delphi : Mamy TPanel, który jest Disabled. Wszystkie kontrolki, które się na nim znajdują są oczywiście również Disabled,
jednak ich wygląd jest taki jak gdyby były Enabled.

W Codetyphon : Mamy TPanel, który jest Disabled. Wszystkie kontrolki, które się na nim znajdują są oczywiście również Disabled,
jednak ich wygląd jest taki jak gdyby były (są) również Disabled.

Czy jest jakiś sposób aby w Codetyphon kontrolki znajdujące się na TPanel Disabled miały wygląd Enabled (tak jak w Delphi) ?

Pozdrawiam
JW

0

A to jakaś wielka przeszkoda że masz taką nieprawidłowość?

0

W Delphi : Mamy TPanel, który jest Disabled. Wszystkie kontrolki, które się na nim znajdują są oczywiście również Disabled, jednak ich wygląd jest taki jak gdyby były Enabled.

Jeśli faktycznie tak to wygląda to jest to wizualny błąd, bo jeśli komponent jest zablokowany (bez względu na to czy bezpośrednio czy pośrednio, za sprawą komponentu rodzica) to ma wyglądać jak zablokowany;

Według mnie to zachowanie:

W Codetyphon : Mamy TPanel, który jest Disabled. Wszystkie kontrolki, które się na nim znajdują są oczywiście również Disabled, jednak ich wygląd jest taki jak gdyby były (są) również Disabled.

jest jak najbardziej poprawne i wręcz oczekiwałbym takiego po zablokowaniu komponentu rodzica.

0

Miałem dokładnie odwrotny do Twojego problem czyli musiałem w delphi na panelu.enabled = false ustawić wszystkie kontrolki aby też miały wygląd enabled=false. U mnie skończyło się pętlą rekurencyjną po komponentach, których parentem był ten panel i przestawianie enable=false ... u ciebie taka pętla też zadziała ale może ktoś ma lepszy pomysł

0

U mnie skończyło się pętlą rekurencyjną po komponentach, których parentem był ten panel i przestawianie enable=false ...

Samo ustawienie na True/False nie wystarczy, bo jeśli któryś komponent osadzony w panelu był już zablokowany, to po odblokowaniu panelu nadal taki musi pozostać; Tak więc trzeba by zapamiętywać stany kontrolek przed ich blokowaniem, aby móc przywrócić oryginalny stan po odblokowaniu rodzica; Można to wykonać na wiele sposobów, chocby używając właściwości Tag;

Jednak w dalszym ciągu nie rozumiem w czym problem - zachowanie w CodeTyphon jest jak najbardziej prawidłowe wizualnie i nie zmieniałbym tego.

0

Problem jest w tym, iż takie zachowanie kontrolki jak w Delphi jest po prostu czytelniejsze. Mam na myśli kolor np. tekstu, który pozostaje clBlack; Bodajże w bibliotece Jedi jest komponent JVEdit, który umożliwia ustawienia koloru Font-u w przypadku gdy kontrolka jest zablokowana (zdaje się, że DisabledTextColor). Podobnie działa TextEdit z biblioteki DvExpress (ForeColor). Chodzi o wygodę pracy. Idealna sytuacja to taka, iż po zablokowaniu kontrolki staje się "wyszarzona" ale kolor tekstu pozostaje ten sam jak przed blokadą.

1

Problem jest w tym, iż takie zachowanie kontrolki jak w Delphi jest po prostu czytelniejsze.

Mam nadzieję, że żartujesz;

Każdy komponent ma zdefiniowany wygląd według swojego stanu; Jeżeli jest odblokowany, zawiera jakieś kolorowe malowanie, aby przyciągał wzrok; Natomiast jeśli jest zablokowany, ma to być widoczne; W takim przypadku komponent powinien bardziej zlewać się z otoczeniem (tłem rodzica) i nie przyciągać wzroku, co zapewnia malowanie w odcieniach szarości;

Użytkownicy różnych programów dobrze wiedzą czym wyróżniają się komponenty aktywne, możliwe do interakcji, a także jak wyglądają komponenty zablokowane; Jeśli odwróci się schemat i zacznie malować kontrolki zablokowane tak samo jak odblokowane, użytkownik nie będzie wiedział, czy to bug, czy feature;

Tak więc zachowanie w CodeTyphon jest prawidłowe i nie robi użytkownikowi wody z mózgu.

0

@furious programming ma rację, coś Ci się Delphi poniszczyło. I tak jak pisałem, skoro pożądany efekt masz w swojej apce to czy ta rozbieżność między CT a Delphi jest aż tak istotna?

0

Dodam tylko od siebie tyle, że w każdej wersji Delphi występuje ten problem z niewyłączaniem wizualnym kontrolek ENABLED = FALSE; w przypadku gdy ustawimy panel.enabled := False;
Włącznie z wersją 10.1 Update 1

0

Jeżeli faktycznie Delphi od dawna aż do najnowszej wersji nie blokuje jawnie komponentów-dzieci (czyli nie ustawia ich właściwości Enabled na False), to macie kilka rozwiązań, w zależności od faktycznego stanu rzeczy;

Sam nie mam tego jak sprawdzić, dlatego że nie używam Delphi i nie chce mi się instalować środowiska dla jednego testu, jednak jeśli faktycznie uważacie to za problem - należy zgłosić bug producentowi; Przy czym nie chce mi się wierzyć, że przez załóżmy 20 lat nikomu to nie przeszkadzało i nikt tego nie zgłosił :]

1 użytkowników online, w tym zalogowanych: 0, gości: 1