Wiem, że można wyłączyć niestandardową stylizację komponentów, ale jak włączyć style tylko dla jednej klasy komponentów? Na przykład pozostaw całą formę i wszystkie elementy na niej nieskrywane, a skórę tylko TButton. Podobnie jak na tym obrazie.Stylizowanie tylko jednego komponentu VCL w Delphi
Odpowiedz
Większość VCL steruje wewnętrznie wykorzystuje globalną funkcję StyleServices
aby uzyskać metody zwrócić kontrolę. Więc jeśli nie używasz stylów Vcl, StyleServices
zwraca instancję do funkcji API Windows, aby narysować tematyczne elementy sterujące (interfejsy UxTheme API). ponieważ to nie jest droga do skóry (zastosowanie stylów Vcl) tylko do pojedynczej kontroli klasy (przynajmniej którą sam narysujesz kontrolę).
Zatem jedyną alternatywą jest zastosowanie stylów Vcl, a następnie wyłączenie dla wszystkich elementów sterujących z wyjątkiem jednego typu, którego szukasz.
można użyć coś jak ten
procedure DisableVclStyles(Control : TControl;const ClassToIgnore:string);
var
i : Integer;
begin
if Control=nil then
Exit;
if not Control.ClassNameIs(ClassToIgnore) then
Control.StyleElements:=[];
if Control is TWinControl then
for i := 0 to TWinControl(Control).ControlCount-1 do
DisableVclStyles(TWinControl(Control).Controls[i], ClassToIgnore);
end;
sprawdzić ten formularz z VCL Style
A teraz po wołania powyższego sposobu
DisableVclStyles(Self,'TButton');
Uwaga: za pomocą właściwości StyleElements umożliwienie o wyłączenie style VCL nie działa z jakiegoś komponentu podobnego (TStringGrid, TBitBtn, TSpeedButton i tak dalej)
Próbuję tego w XE2 i 'TControl' nie ma właściwości' StyleElements' –
Nieważne Właśnie znalazłem inną odpowiedź: http://stackoverflow.com/questions/16538890/how-to-color-the -background-of-tcombobox-z-vcl-style-enabled –
co, jeśli mój komponent zostanie utworzony w DataModule? po umieszczeniu "DisableVclStyles (Self, 'TButton');" w module danych IDE zwraca mi ten błąd: Typy niezgodne: 'TControl' i 'TDMRotinas' –
- 1. Jak dodać Delphi XE2 do 64-bitowego wsparcia dla prostego 32-bitowego komponentu VCL Delphi XE2?
- 2. Jak utworzyć styl tematu Vcl dla mojego własnego komponentu?
- 3. Błąd w Delphi VCL Drag and Drop?
- 4. Tworzenie nowego komponentu przez połączenie dwóch kontrolek (TEdit i TTrackBar) w Delphi VCL
- 5. Stylizowanie wyłączonego wejścia tylko z css
- 6. Stan komponentu Delphi XE2 TurboPower
- 7. Samouczek stylów VCL Delphi - jak zmienić styl w środowisku wykonawczym
- 8. Delphi XE2 VCL style nie rysuje poprawnie Tabsheets
- 9. Jakiej klasy bazowej użyć podczas tworzenia składnika Delphi VCL?
- 10. Jak zmienić ścieżkę instalatora dla jednego komponentu?
- 11. Delphi XE2: Czy istnieje predefiniowany warunek identyfikacji VCL i FireMonkey?
- 12. Delphi XE2 Style VCL, aktualizowanie bloków podpisów innych formantów unieważniających
- 13. Delphi VCL for Win32 - wiele programów obsługi zdarzeń
- 14. Co robi [ref] w aplikacji VCL?
- 15. DevExpress ExpressSkins lub style VCL?
- 16. Komponent VCL Nieprzezroczystość/przezroczystość
- 17. ajaxStatus tylko dla określonego komponentu
- 18. Projektowanie komponentów Delphi - pobierz właściwość z komponentu z podległości
- 19. Stylizowanie kart Jquery-ui
- 20. Ponów scalenie tylko jednego pliku
- 21. Wyłącz automatyczną zmianę układu klawiatury w DbGrids.pas w VCL
- 22. Jak debugować VCL w lakierze?
- 23. Wsparcie dla tylko jednego widoku w UINavigationController
- 24. Przepełnienie tylko jednego elementu w DIV
- 25. Wybieranie tylko jednego elementu w kolekcji jQuery
- 26. TDateTimePicker VCL Style glitch w XE2, który zdarza się tylko w Windows Classic Theme
- 27. Jak zintegrować pliki pomocy komponentu z systemem Delphi?
- 28. Stylizowanie datepicker: podświetl konkretne daty
- 29. Jak ustawić wysokość jednego komponentu układu na taką samą wysokość innego komponentu?
- 30. Stylizowanie ostatniego rekordu w datowalnym jsf
jeśli potrzebna jest tylko przycisk stylizowany - spróbuj znaleźć stylizujące button - komponent potomny 'TButton', który nie wygląda jak zwykły' TButton'. Dodanie funkcjonalności VCL Styles do projektu, a następnie wyłączenie go dla całego projektu, z wyłączeniem 'TButton', nie jest dobrym sposobem na skórowanie tylko jednego przycisku w projekcie. – teran
Wygląda dziwnie na to, że w Delphi zastosowano styling funtionality i nie można go używać bez stosowania do całej aplikacji. – Zelenov
@Zelenov Nie wydaje mi się dziwny - został zaprojektowany do tego celu. Dopóki stosujesz motyw, zakłada się, że używa on całej aplikacji. Osobiście uważam za dziwne używanie tych stylów do skorygowania tylko niektórych kontrolek - biorąc pod uwagę mechanizm działania. W tym celu utworzyłbym własny, niestandardowy przycisk, który jest dość trywialny. –