AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VCL Styles nur für einzelne Controls?

Ein Thema von ULIK · begonnen am 6. Nov 2024 · letzter Beitrag vom 7. Nov 2024
Antwort Antwort
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
427 Beiträge
 
Delphi 11 Alexandria
 
#1

VCL Styles nur für einzelne Controls?

  Alt 6. Nov 2024, 16:39
Ist es irgendwie möglich, die VCL Styles nur für einzelne Controls zu aktivieren, nicht aber für die gesamte Anwendung?

Hintergrund der Frage: meine Anwendung verwendet das Skinning vom DevExpress um einen dunklen Modus und ein W11 kompatibles Aussehen zu realisieren (da stark DX-Controls basiert). Allerdings gibt es noch einzelne andere Controls die vom DX-Skinning nicht erfaßt werden.
Das führt nun dazu, daß manche Scrollbars nun im W11 Stil (und dunkel) dargestellt werden, andere dagegen im Default VCL-Stil und hell.

Meine Idee war es nun, die VCL Stile dafür zu verwenden und nur die paar Controls damit partiell zu skinnen, die vom DX Skinning nicht erfaßt werden. Theoretisch funktioniert das auch, sobald ich die VCL-Styles einbinde und den Default auf einen der gewählten stelle. Dann erscheinen nun die Scrollbars richtig geskinnt und ich kann über den StyleName des Controls explizit z.B. Hell/Dunkel umstellen. Nur führt das generelle Skinnen zu anderen Problem, das es wiederum Elemente erfaßt, die explizit nicht geskinnt werden sollen.

Sobald ich aber das VCL-Skining mit Default 'Windows' verwende, greift für die Controls das Skinning überhaupt nicht mehr, auch wenn ich dort dann explizit als StyleName einen von mir gewünschten einsetze.


Gibt es da irgendeine Lösung? Mir würde es im Prinzip reichen, wenn ich einem Control (z.B. TMemo) sagen könnte: bitte stelle die interne Scrollbar so dar, wie es das Betriebssystem darstellen würde. Und verwende dazu die optionale(n) Farbe(n) ...
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
701 Beiträge
 
Delphi 12 Athens
 
#2

AW: VCL Styles nur für einzelne Controls?

  Alt 6. Nov 2024, 16:52
Hast Du mal versucht, die StyleElements-Eigenschaft der betreffenden Controls zu ändern?
Peter Below
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
427 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: VCL Styles nur für einzelne Controls?

  Alt 6. Nov 2024, 17:16
Das will ich eigentlich vermeiden. Denn dann müßte ich von allen Controls die Properties erst einmal leeren und dann wieder einschalten, wo benötigt. Mir wäre eine Lösung ohne Default VCL-Stil insofern sypathischer, das sich dann hoffentlich nicht das VCL Skinning und das DX-Skinning in die Quere kommen können. Ich bin mir nicht sicher, ob DX Skinning immer ein mögliches VCL Skinning überschreibt. Es scheint zwar so zu sein, aber ich weiß es halt nicht sicher.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#4

AW: VCL Styles nur für einzelne Controls?

  Alt 6. Nov 2024, 17:30
Du kannst den VCL-Style in der Applikation aktivieren und trotzdem bei jedem Form den Windows-Style auswählen. Dann sollte es auch funktionieren, wenn du einzelne Controls im Form einen anderen Style gibst.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
269 Beiträge
 
Delphi 12 Athens
 
#5

AW: VCL Styles nur für einzelne Controls?

  Alt 6. Nov 2024, 17:33
Ich hatte mal gewissermaßen das umgekehrte Problem:
Ich verwende einen dunklen VCL-Stil, der aber nicht bei allen Komponenten richtig greift (oftmals sind Drittanbieterkomponenten ein Problem).
Meine Lösung war es, eine generische Methode zu schreiben, die im FormCreate einer Form deren Komponentenliste durchgeht und, wenn sie auf einen Problemtyp stößt, bei der Komponente die problematischen StyleElements deaktiviert und manuell Farben etc anpasst.

Abhängig davon, um was für und wieviele Control-Typen es sich handelt, wäre das vielleicht eine Option.
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
427 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: VCL Styles nur für einzelne Controls?

  Alt 7. Nov 2024, 16:43
Vielen Dank für all die Tips. Leider haben diese alle in der realen Anwendung so ihre Probleme, so daß das Verwenden der VCL Skins entfällt.
Aber da es mir ja eigentlich nur um die Farben der Scrollbars geht, die manche Controls intern erstellen, da habe ich nun eine andere Lösung gefunden:

SetWindowTheme(AHandle,'DarkMode_Explorer', nil) zum Setzen einer dunklen Scrollbar bzw. SetWindowTheme(AHandle,'Explorer', nil); wenn es wieder die helle Version sein soll. AHandle ist dabei das Fensterhandle des Control (also z.B. einer TMemo-Instanz)

Man kann damit wohl auch noch über den letzten Parameter von SetWindowTheme genauer steuern, nur habe ich noch nicht herausgefunden, was da für Werte erwartet werden. Falls noch jemand Hinweise hat, wie man mögliche Werte für den zweiten Parameter bekommt (also das 'DarkMode_Explorer'), wäre ich auch sehr dankbar.

In meiner realen Anwendung funktioniert das alles bisher nun ganz gut und ich hab noch keine Probleme damit festgestellt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz