AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Toolbar2000/SpTBX Themeservices-fähig machen?
Thema durchsuchen
Ansicht
Themen-Optionen

Toolbar2000/SpTBX Themeservices-fähig machen?

Ein Thema von Codehunter · begonnen am 21. Apr 2017 · letzter Beitrag vom 9. Mai 2017
Antwort Antwort
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.284 Beiträge
 
Delphi 12 Athens
 
#1

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

  Alt 25. Apr 2017, 07:27
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".
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.284 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 8. Mai 2017, 15:43
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.
Angehängte Dateien
Dateityp: zip TBXThemeServices.zip (3,03 MB, 6x aufgerufen)
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#3

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

  Alt 8. Mai 2017, 17:37
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
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.284 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 9. Mai 2017, 07:53
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.
Wäre das klassischer Open-Source, dann vielleicht ja. So aber sind das kommerzielle, dual-lizensierte Komponenten. Die VCL-Themes lassen sich ja ganz gut über eine Skin-Unit auf SpTBX abbilden. Die Controls die ich bisher gemacht habe waren recht einfach zu adaptieren. Nervig ist allenfalls, dass die StyleServices konstruktionsbedingt eine Copy&Paste-Programmierung erzwingen. Das liegt an den vielen overloaded-Routinen, die sich kaum bis gar nicht abstrahieren lassen.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden

Geändert von Codehunter ( 9. Mai 2017 um 07:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.749 Beiträge
 
Delphi 2007 Professional
 
#5

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

  Alt 9. Mai 2017, 06:21
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
Uli Gerhardt
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#6

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

  Alt 9. Mai 2017, 06:40
Richtig. Die funktionieren allerdings nur mit den VCL-Sourcen (Starter is also außen vor).
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.749 Beiträge
 
Delphi 2007 Professional
 
#7

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

  Alt 9. Mai 2017, 06:46
Richtig. Die funktionieren allerdings nur mit den VCL-Sourcen (Starter is also außen vor).
Wieso das? Werden die Originalsourcen gepatcht oder so?
Uli Gerhardt
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#8

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

  Alt 9. Mai 2017, 07:03
Nein. Es werden aber aus den orginal-Sourcen 2 inc's benötigt, ohne die das ganze nicht funktioniert (Fehlermeldungen ohne Ende). Habs ja auspropiert.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.749 Beiträge
 
Delphi 2007 Professional
 
#9

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

  Alt 9. Mai 2017, 07:21
Mach doch mal den RRUZ drauf aufmerksam. Vielleicht kann man das Problem ja beseitigen.
Uli Gerhardt
  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 02:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz