Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Toolbar2000/SpTBX Themeservices-fähig machen? (https://www.delphipraxis.net/192474-toolbar2000-sptbx-themeservices-faehig-machen.html)

Codehunter 21. Apr 2017 11:28

Toolbar2000/SpTBX Themeservices-fähig machen?
 
Hallo!

Ich benutze in vielen Projekten noch SpTBX und bin damit in vielerlei Hinsicht zufriedener als mit den mitgelieferten VCL-Komponenten. Allerdings passen die TBX-Themes und die Themeservices der VCL nicht zusammen. Oder genauer gesagt, mir ist nichts dahingehend bekannt, dass es ein "Wrapper-Theme" zur Anwendung der Themeservices auf SpTBX gibt.

Habe ich da etwas übersehen? Wenn nicht, besteht Interesse an solch einem Wrapper-Theme? Dann würde ich eins schreiben und unter liberaler Lizenz veröffentlichen.

Grüße
Cody

Ghostwalker 21. Apr 2017 13:30

AW: Toolbar2000/SpTBX Themeservices-fähig machen?
 
hi,

du müsstest die Engine von SpTBX umschreiben, so das sie auf die VCL-Engine funktioniert. Dann könnte man beide welten nutzen :)

Denn letztlich machen beide ja das gleiche, sie stellen Zeichenroutinen für die Controls zur Verfügung.

Codehunter 24. Apr 2017 08:19

AW: Toolbar2000/SpTBX Themeservices-fähig machen?
 
Zitat:

Zitat von Ghostwalker (Beitrag 1368573)
du müsstest die Engine von SpTBX umschreiben, so das sie auf die VCL-Engine funktioniert.

Nicht ganz. Die Engine ist ja schon da. Es müsste nur eine Theme-Unit her, die eben mit den VCL-Themeservices pinselt. Der Gedanke ist eigentlich naheliegend, weshalb ich mich gefragt habe ob das nicht schon irgendwann mal jemand gemacht hat und ich mir die Arbeit sparen kann.

Ghostwalker 24. Apr 2017 10:33

AW: Toolbar2000/SpTBX Themeservices-fähig machen?
 
Ja...aber die Engine übernimmt das Zeichnen bei SpTBX..nicht das Theme.

Das Theme definiert nur die Farben/Farbverläufe :)

Codehunter 25. Apr 2017 08:27

AW: Toolbar2000/SpTBX Themeservices-fähig machen?
 
Nein nicht so ganz :-)

Zwar sind praktisch alle Skins die ich kenne, so konstruiert dass die nahezu nur Sätze an Farben definieren. ABER: Alle Skins sind von der Klasse TSpTBXSkinOptions abgeleitet und die hat alle benötigten Pinselfunktionen virtual deklariert. Es wäre also theoretisch schon möglich, eine VCL-Theme-Skin-Unit zu schreiben. Wie ich gesehen habe adaptiert SpTBXSkins.pas sogar schon die Style- bzw. Themeservices.

Allerdings könnte ich nur für die Themeservices entwickeln weil ich nur Delphi 7 (da gabs weder das eine noch das andere) und dann ab XE4 aufwärts (da war es schon nur noch Themeservices) besitze. Ja ich weiß ich kann die älteren lizenzrechtlich nutzen, aber da wird mir dann der Aufwand mit zig IDEs nur für dieses Projekt zu groß. Ich könnte ja Stubs vorsehen die dann andere mit Leben füllen.

Aber wie gesagt, erstmal muss der Bedarf dafür da sein. Bei mir ist es derzeit ein "Nice to have" und kein "Must have".

Codehunter 8. Mai 2017 16:43

AW: Toolbar2000/SpTBX Themeservices-fähig machen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also ich hab da jetzt mal ein bisschen mit experimentiert. Wenn man sich eingehender damit befasst, dann merkt man recht schnell wie unausgereift diese ganze Skinnerei eigentlich ist. Und zwar auf beiden Seiten: Sowohl (Sp)TBX als auch VCL-StyleServices haben ihre Macken.

Interessant ist, dass die VCL nur ein Subset dessen implementiert, was die VCL-StyleServices so beherrschen. Bestes Beispiel Popup-Menüs: Die erscheinen beim TPopupMenu immer im nativen Windows-Stil, auch wenn ich in den Projektoptionen einen VCL-Theme angegeben habe. Implementiere ich die Menü-Pinselei aber in ein SpTBX-Theme, dann werden die Dropdowns durchaus auch gethemed.

Die Theme-Engine von SpTBX verwendet intern keine 32-Bit-Bitmaps, weshalb an manchen Stellen die Fuchsia-TransparentColor erscheint. Das lässt sich nur mit einer Skin-unit nicht lösen, dazu müsste die SpTBXSkins.pas gepatched werden.

Die Graphite-Themes der VCL zeichnen Toolbars schneeweiß, wovon man im ansonsten dunkel gehaltenen Stil Augenkrebs bekommt. Übel wird das dann in Kombination mit dem SpTBXTabSet, welches die Tableiste mittels einer Toolbar realisiert.

Die VCL-Themes stellen speziell bei den dunklen Themes oftmals falsche Textfarben bereit, sodass man kaum die schwarze Schrift auf dem dunkelgrauen Hintergrund lesen kann.

Eine kleine Demo hab ich mal beigefügt, da kann man sich die Misere anschauen.

Ghostwalker 8. Mai 2017 18:37

AW: Toolbar2000/SpTBX Themeservices-fähig machen?
 
Das mit der dunklen Schrift auf dunklem Hintergrund kann ich bestätigen. Allerdings ist das nicht Sache der Engine sondern des Themes selbst. Über den Editor könnte man das im Theme entsprechend anpassen :)

Analog dazu ist das ganze bei der Toolbar.

Grundsätzlich unterscheiden sich die beiden Engines einfach darin, das die VCL überwiegen Grafiken (aus einer entsprechenden Vorlage) verwendet, um Controls darzustellen. SpTBX dagegen verwendet reine Farbeinstellungen und entsprechende Zeichenroutinen um die Controls darzustellen.

D.h. das du im Prinzip die SpTBX-Engine-Methoden auf die entsprechenden VCL-Engine-Methoden umbiegen musst. Wenn du die SpTBX-Themes dann verwenden willst musst du die entsprechenden Grafiken anfertigen.

Evtl. wärs sinnvoller, die SpTbx-Controls so anzupassen, das sie via. Property entweder Sptbx oder VCL-Themeing unterstützen, ohne die Engines selbst anzupassen.

Viel Arbeit isses so oder so :)

uligerhardt 9. Mai 2017 07:21

AW: Toolbar2000/SpTBX Themeservices-fähig machen?
 
Zitat:

Zitat von Codehunter (Beitrag 1370591)
Interessant ist, dass die VCL nur ein Subset dessen implementiert, was die VCL-StyleServices so beherrschen. Bestes Beispiel Popup-Menüs: Die erscheinen beim TPopupMenu immer im nativen Windows-Stil, auch wenn ich in den Projektoptionen einen VCL-Theme angegeben habe.

Ich glaube, das und viele andere Unzulänglichkeiten werden hier gefixt: https://github.com/RRUZ/vcl-styles-utils

Ghostwalker 9. Mai 2017 07:40

AW: Toolbar2000/SpTBX Themeservices-fähig machen?
 
Richtig. Die funktionieren allerdings nur mit den VCL-Sourcen (Starter is also außen vor).

uligerhardt 9. Mai 2017 07:46

AW: Toolbar2000/SpTBX Themeservices-fähig machen?
 
Zitat:

Zitat von Ghostwalker (Beitrag 1370653)
Richtig. Die funktionieren allerdings nur mit den VCL-Sourcen (Starter is also außen vor).

Wieso das? Werden die Originalsourcen gepatcht oder so?


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:34 Uhr.
Seite 1 von 2  1 2   

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