Discussion:
PageControl Highlights fehlen
(zu alt für eine Antwort)
Jens Dierks
2012-04-29 19:57:23 UTC
Permalink
Hallo,

Umstieg von D6 auf XE2 starter und es fehlen jetzt plötzlich die Highlights wenn ich
bei den Tabsheets highligted auf True setze.
Auch geht es nicht mehr die Farbe vom Text einer CheckBox zu ändern, um ihn mehr
kenntlich zu machen.
Ich verende den Windows default Theme, keine weiteren.

Offensichtlich werden diese Dinge irgendwie vom Theme überstimmt, was muss
ich tun um das wieder zu ermöglichen?

Getestet habe ich das unter XP und Vista, bei beiden das gleiche Verhalten, active
Tracking wird angezeigt, falls das weiterhilft.
Peter
2012-04-30 06:01:20 UTC
Permalink
Post by Jens Dierks
Hallo,
Umstieg von D6 auf XE2 starter und es fehlen jetzt plötzlich die
Highlights wenn ich bei den Tabsheets highligted auf True setze.
Auch geht es nicht mehr die Farbe vom Text einer CheckBox zu ändern,
um ihn mehr kenntlich zu machen.
Ich verende den Windows default Theme, keine weiteren.
Sieh mal in den Project Options unter Application nach. Ist "Enable
run-time Themes" ausgewählt?

Da Du von D6 kommst hast Du eventuell ein 3rd-party Manifest
eingebunden, um Theme-Unterstützung zu erhalten. Das mußt Du entfernen,
sonst gibt's eventuell Konflikte.
--
Peter Below
Jens Dierks
2012-04-30 11:12:10 UTC
Permalink
Post by Peter
Sieh mal in den Project Options unter Application nach. Ist "Enable
run-time Themes" ausgewählt?
Ja, es ist dann unter "Appearance" nur der Windows Theme ausgewählt.

Ganz ohne Themes würden es wie unter D6 aussehen und die Highlights
funktionieren wieder.
Dann könnte ich aber eigentlich auch bei D6 bleiben.
Post by Peter
Da Du von D6 kommst hast Du eventuell ein 3rd-party Manifest
eingebunden, um Theme-Unterstützung zu erhalten. Das mußt Du entfernen,
sonst gibt's eventuell Konflikte.
Nö, ich hatte nur noch einige RXtools Komponenten drin, die ich ersetzt
habe. Also nur einige erweiterte komponenten wo Mouse Ereignisse
published wurden, nichts weiter.


Muss ich ein eigenes "Manifest"? erstellen oder sollte das eingestellte
Theme auch so funktionieren?
Jens Dierks
2012-04-30 12:36:46 UTC
Permalink
Was vielleicht noch zu erwähnen wäre ist dass ich XE2 auf die gleiche
Platte wie D6 installiert habe, dachte mir dass bei Ungereimtheiten
die Installation Hinweise geben würde.

Jetzt sind bei D6 die Hälfte der Komponenten im neuen Design,
vermutlich geteilte gemeinsame Dateien oder was auch immer.

Zur Not habe ich D6 noch auf einem Festplatten Backup.

Die Vorstellung dass ich XE2 nochmal installieren müsste fände ich
nicht gerade prickelnd...
Peter
2012-04-30 15:57:56 UTC
Permalink
Post by Jens Dierks
Was vielleicht noch zu erwähnen wäre ist dass ich XE2 auf die gleiche
Platte wie D6 installiert habe, dachte mir dass bei Ungereimtheiten
die Installation Hinweise geben würde.
Solange Du beides in unterschiedlichen Verzeichnisbäumen hast gibt es
keine Konflikte.
Post by Jens Dierks
Jetzt sind bei D6 die Hälfte der Komponenten im neuen Design,
vermutlich geteilte gemeinsame Dateien oder was auch immer.
Das kann schlicht nicht sein. D6 und XE2 haben deutlich
unterschiedliche RTL und VCL Sources die mit ziemlicher Sicherheit mit
dem jeweils anderen Compiler nicht compilierbar wären. Und die Binaries
(DCU und packages) sind eh versionsspezifisch.
Post by Jens Dierks
Zur Not habe ich D6 noch auf einem Festplatten Backup.
Die Vorstellung dass ich XE2 nochmal installieren müsste fände ich
nicht gerade prickelnd...
--
Peter Below
Jens Dierks
2012-04-30 20:41:08 UTC
Permalink
Post by Peter
Solange Du beides in unterschiedlichen Verzeichnisbäumen hast gibt es
keine Konflikte.
Bei D6 ist ja noch alles unter Borland gespeichert, jetzt Embercadero.
Sollte eigentlich sauber getrennt sein.
Post by Peter
JD: Jetzt sind bei D6 die Hälfte der Komponenten im neuen Design..
Das kann schlicht nicht sein. D6 und XE2 haben deutlich
unterschiedliche RTL und VCL Sources die mit ziemlicher Sicherheit mit
dem jeweils anderen Compiler nicht compilierbar wären. Und die Binaries
(DCU und packages) sind eh versionsspezifisch.
Kann sein dass ich schon mit XE2 compiliert hatte und danach wieder
mit D6, muss ich nochmal überprüfen. Wäre wirklich seltsam.


Das hilft soweit natürlich auch nicht viel weiter, wenn Jemand noch
einen Tip hat wäre ich dankbar!
Jens Dierks
2012-05-01 11:00:25 UTC
Permalink
Post by Jens Dierks
Kann sein dass ich schon mit XE2 compiliert hatte und danach wieder
mit D6, muss ich nochmal überprüfen.
War vermutlich so, wenn ich alte Projekte mit D6 neu erzeuge haben sie
keinen neuen Look.

Zurück zur Ausgangsfrage, folgende Situation:

Neue VCL Anwendung, PageControl auf das Fenster, einige neue
TabSheets machen.

Jetzt kann ich PageControl.HotTracking Stzen wie ich will, ist immer
an. Ich kann bei den TabSheets Highlighted setzen wie ich will, wird
nie angezeigt. Egal ob zur Entwurfszeit oder zur Laufzeit.

Die Werte von Highlighted werden gesetzt, das Auslesen zur Laufzeit
ergibt die entsprechenden Werte.

Ist das vielleicht ein XE2 Starter Problem, hat noch Jemand die
Starter Version?
Peter
2012-05-02 17:49:07 UTC
Permalink
Post by Jens Dierks
Post by Jens Dierks
Kann sein dass ich schon mit XE2 compiliert hatte und danach wieder
mit D6, muss ich nochmal überprüfen.
War vermutlich so, wenn ich alte Projekte mit D6 neu erzeuge haben sie
keinen neuen Look.
Neue VCL Anwendung, PageControl auf das Fenster, einige neue
TabSheets machen.
Jetzt kann ich PageControl.HotTracking Stzen wie ich will, ist immer
an. Ich kann bei den TabSheets Highlighted setzen wie ich will, wird
nie angezeigt. Egal ob zur Entwurfszeit oder zur Laufzeit.
Die Werte von Highlighted werden gesetzt, das Auslesen zur Laufzeit
ergibt die entsprechenden Werte.
Ist das vielleicht ein XE2 Starter Problem, hat noch Jemand die
Starter Version?
Nein, ich kann das mit XE2 Architect reproduzieren. Das liegt offenbar
am Theme-Support, wenn der an ist kann man einige Features, die zum
Theme gehören, nicht mehr ausschalten. Wenn man in den Project Settings
Enable Runtime Themes auf "None" setzt funktioniert es wie unter D6
(und sieht auch so aus ;-)).

Themes sind halt so ziemlich alles oder nichts. Der Gedanke dahinter
ist halt, daß der Benutzer das Aussehen der Anwendungen bestimmt, durch
die Wahl eines Themes, und nicht mehr der Programmierer. Wenn das Theme
halt sagt, das Pagecontrols immer Hottracking unterstützen dann ist das
halt so.
--
Peter Below
Jens Dierks
2012-05-02 20:30:44 UTC
Permalink
Post by Peter
Nein, ich kann das mit XE2 Architect reproduzieren. Das liegt offenbar
am Theme-Support, wenn der an ist kann man einige Features, die zum
Theme gehören, nicht mehr ausschalten. Wenn man in den Project Settings
Enable Runtime Themes auf "None" setzt funktioniert es wie unter D6
(und sieht auch so aus ;-)).
Themes sind halt so ziemlich alles oder nichts. Der Gedanke dahinter
ist halt, daß der Benutzer das Aussehen der Anwendungen bestimmt, durch
die Wahl eines Themes, und nicht mehr der Programmierer. Wenn das Theme
halt sagt, das Pagecontrols immer Hottracking unterstützen dann ist das
halt so.
Teilweise ist das ja nachvollziehbar, aber ein Highlight (welches im
jeweiligen Theme Style gezeichnet werden würde) nicht zuzulassen,
aber OwnerDraw zu ermöglichen wobei der ganze Style verloren geht,
finde ich zumindest eigenwillig.

Hätte ich mehr Platz könnte ich die Captions ändern oder eine ImageList
benutzen, hab ich aber nicht.

Naja, muss ich mir etwas anderes einfallen lassen, erstmal Danke für
die Mithilfe, auch an Soeren.
Peter
2012-05-03 15:46:20 UTC
Permalink
Post by Jens Dierks
Teilweise ist das ja nachvollziehbar, aber ein Highlight (welches im
jeweiligen Theme Style gezeichnet werden würde) nicht zuzulassen,
aber OwnerDraw zu ermöglichen wobei der ganze Style verloren geht,
finde ich zumindest eigenwillig.
Es liegt in der Verantwortung des Programmierers, sich bei
OwnerDraw-Dingen an dem aktuellen Theme zu orientieren. Dafür gibt es
schließlich ein komplettes API für themed drawing.
--
Peter Below
Jens Dierks
2012-05-03 20:52:38 UTC
Permalink
Post by Peter
Post by Jens Dierks
Teilweise ist das ja nachvollziehbar, aber ein Highlight (welches im
jeweiligen Theme Style gezeichnet werden würde) nicht zuzulassen,
aber OwnerDraw zu ermöglichen wobei der ganze Style verloren geht,
finde ich zumindest eigenwillig.
Es liegt in der Verantwortung des Programmierers, sich bei
OwnerDraw-Dingen an dem aktuellen Theme zu orientieren. Dafür gibt es
schließlich ein komplettes API für themed drawing.
Das wäre dann die nächste Frage gewesen, wobei ich jetzt nicht so
viel Zeit dafür aufwenden wollte nur um ein Tab hervorzuheben.
Zumindest die paar Samples die ich im Netz auf die schnelle gefunden
habe sehen relativ aufwendig aus.

Das wichtigste ist erstmal dass ich weiss das alles so funktioniert wie
es soll und ich mich um die eigentlichen Dinge kümmern kann.
Besten Dank nochmals!

Soeren Muehlbauer
2012-05-02 15:06:33 UTC
Permalink
Hi,
Post by Jens Dierks
Umstieg von D6 auf XE2 starter und es fehlen jetzt plötzlich die Highlights wenn ich
bei den Tabsheets highligted auf True setze.
Diese Funktionalität basiert auf der Nachricht TCM_HIGHLIGHTITEM.

Laut
http://msdn.microsoft.com/en-us/library/windows/desktop/bb760602%28v=vs.85%29.aspx
wird diese ab Version 6 der ComCtl32 und aktiviertem Theme ignoriert
bzw. hat keinen sichtbaren Effekt.

Sören
Andrej Kluge
2012-05-02 21:30:17 UTC
Permalink
Hi,
Post by Soeren Muehlbauer
Diese Funktionalität basiert auf der Nachricht TCM_HIGHLIGHTITEM.
Laut
http://msdn.microsoft.com/en-us/library/windows/desktop/bb760602%28v=vs.85%29.aspx
wird diese ab Version 6 der ComCtl32 und aktiviertem Theme ignoriert
bzw. hat keinen sichtbaren Effekt.
Das klang für mich zunächst plausibel als Erklärung, aber würden nicht beide
erzeugten Programme (von D6 und XE2), auf demselben Rechner laufend,
dieselbe comctrl32 nutzen? Oder erzeugen die Compiler unterschiedliche
DLL-Bindungen? (hier fehlt mir das Tiefenwissen)

Ciao
AK
Christian Gudrian
2012-05-03 07:08:45 UTC
Permalink
Post by Andrej Kluge
aber würden nicht beide
erzeugten Programme (von D6 und XE2), auf demselben Rechner laufend,
dieselbe comctrl32 nutzen?
Kommt auf das Manifest an. Sobald im Manifest steht, dass die neuen Controls (aka. Themes) verwendet werden sollen, wird effektiv auf eine andere comctrl32 umgeschaltet. D6 erzeugt standardmäßig kein Manifest, also wird die alte Version verwendet. XE2 erzeugt standardmäßig ein Manifest. Damit wird die neue Version verwendet.

Christian
Loading...