Delphi-PRAXiS

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 Systemfarben (https://www.delphipraxis.net/12996-systemfarben.html)

MatthiasW 8. Dez 2003 23:27


Systemfarben
 
Ich habe mir einen XP - SpeedButton Programmiert. Dieser sieht auch unter zB. Win2K XP-mässig aus, ich würde aber gerne wenn das Control auf einen WindowsXP - System läuft das so haben, das wenn auf dem XP - Rechner das Design geändert wird, das dann mein Control ebenfalls in den neuen Farben erstrahlt.

Gibts da Systemconstanten für diese Farben also sowas wie "clActiveBorder" (clActiveBorder stellt leider den Rahmen nur grau dar). Gibts da eine Farbconstante für Border des SpeedButton, die Color für MouseOver und MouseDown und Exclusive?

Danke für eure Hilfe

Mfg Matthias

Dax 9. Dez 2003 07:22

Re: Systemfarben
 
Also, die Übersetzungen für die Systemfarben von Delphi bin ich grad am machen. Die könnt ich dir morgen geben :wink:
Aber für OnMouseDown und so weiß ich auch nix.

Bernhard Geyer 9. Dez 2003 08:36

Re: Systemfarben
 
Die Themes-Farben können über die Funktion GetThemeSysColor aus der System-DLL uxtheme.dll abgefragt werden.
Dazu werden die COLOR_*-Konstanten aus der Windows.pas verwendet.

Warum willst Du XP-Theming nochmals unter W2K nachprogrammieren? Falls Du ein paar € ausgeben kannst würde ich dir empfehlen mal die ElPack-Komponentensammlung anzusehen. Diese bieten eine eigene XP-Themes-Engine an, mit welcher unter Win98-2003 jede beliebige XP-Themes-DLL verwendet werden kann um XP-Theming auch unter nicht XP-Themes-Systemen nachzubilden.

MatthiasW 9. Dez 2003 09:31

Re: Systemfarben
 
Hallo,
Zitat:

Zitat von Bernhard Geyer
Warum willst Du XP-Theming nochmals unter W2K nachprogrammieren?

ich glaube wir haben uns falsch verstanden und oder ich mich falsch ausgedrückt. Ich möchte natürlich nicht das XP-Theming nachproggen. Ich möchte folgendes machen: Dem SpeedButton den ich programmiert habe ich die Farben gegeben das dieser auch unter Win2K so aussieht wie das ganze unter OfficeXP mit WinXP aussieht. Jetzt möchte ich aber noch eine Funktion einbauen, das wenn dieses Control auf einem WindowsXP - Rechner eingesetzt wird die Systemfarben verwendet werden, sodas wenn im WinXP ein anderes Design verwendet wird, sich dieser Button in den Farben an dieses Design anpassen tut.

Also das was ich machen will in kurzform:

Unter Win2K:

Canvas.Brush.Color := RGB(49,106,197);
Canvas.Brush.FrameRect(ClientRect);


Unter WinXP:

Canvas.Brush.Color := clHighLight;
Canvas.Brush.FrameRect(ClientRect);


Ich hoffe jetzt hab ichs etwas verständlicher ausgedrückt was ich machen will

Mfg Matthias

MatthiasW 9. Dez 2003 09:36

Re: Systemfarben
 
Hallo,

Zitat:

Zitat von gecko2000
Also, die Übersetzungen für die Systemfarben von Delphi bin ich grad am machen. Die könnt ich dir morgen geben :wink:
Aber für OnMouseDown und so weiß ich auch nix.

daran wäre ich interessiert.

Jeder SpeedButton im OfficeXP hat ja mehrere Farben:

- die Farbe für den Border (49,106,197)
- die Farbe wenn keine Mouse über dem Button ist oder dieses auch nicht im
Exclusive - Mode ist
- die Farbe wenn die Mouse über dem SpeedButton ist
- und die Farbe wenn der Button gedrückt wird

ich gehe halt in der annahme das es für diese 4 Farben Systemconstanten gibt die ich verwenden kann, sodas mein Control im Aussehen an eine Designänderung im XP angepasst wird (automatisch)

Mfg Matthias

Luckie 9. Dez 2003 11:21

Re: Systemfarben
 
Zitat:

Zitat von MatthiasW
Jeder SpeedButton im OfficeXP hat ja mehrere Farben:

[..]

sodas mein Control im Aussehen an eine Designänderung im XP angepasst wird (automatisch)

Was hat das Aussehen der Anwendungssoftware Office mit der Versionsnummer XP mit den Themes des Betriebssystems Windows XP zu tun? Nichts!
Also ich würde einfach ein Manifest bei legen (zeigt nur Wirkung unter XP) und mich mehr auf die Funktionalität des Programmes konzentrieren als irgendwelche designmäßigne Spielereien. :roll:

choose 9. Dez 2003 11:38

Re: Systemfarben
 
Zitat:

Zitat von gecko2000
Also, die Übersetzungen für die Systemfarben von Delphi bin ich grad am machen. Die könnt ich dir morgen geben

Ich wäre daran interessiert, welche Farbe der std Hyper-Link hat. Bisher waren die Farben bei den mir bekannten Komponenten-Suits immer auf clBlue gesetzt, obgleich diese Farbe auch davon abweichen kann...
Wird es diese "Konstante" ebenfalls bei Deiner Übersetzung geben?

MathiasSimmack 9. Dez 2003 12:30

Re: Systemfarben
 
Zitat:

Zitat von MatthiasW
ich glaube wir haben uns falsch verstanden und oder ich mich falsch ausgedrückt. Ich möchte natürlich nicht das XP-Theming nachproggen. Ich möchte folgendes machen: Dem SpeedButton den ich programmiert habe ich die Farben gegeben das dieser auch unter Win2K so aussieht wie das ganze unter OfficeXP mit WinXP aussieht.

Helles Blau mit dunkelblauem Rand?
Ändere doch spaßeshalber mal deine Systemfarben für markierte Elemente auf Rot und starte Office XP noch mal. Du wirst dein ... äh ... rotes Wunder erleben, denn die Menüs und Toolbars von Office passen sich an die jeweils gewählte Systemfarbe an.

Zitat:

Jetzt möchte ich aber noch eine Funktion einbauen, das wenn dieses Control auf einem WindowsXP - Rechner eingesetzt wird die Systemfarben verwendet werden, sodas wenn im WinXP ein anderes Design verwendet wird, sich dieser Button in den Farben an dieses Design anpassen tut.
"Tut" tut man nicht benutzen tun.

Die für dich einfachste Variante ist ohne Zweifel das Hier im Forum suchenXPMenu, da es neben dem Menü auch Toolbars usw. im Office XP-Stil enthält.

MatthiasW 9. Dez 2003 22:01

Re: Systemfarben
 
Hallo,

Danke für eure Hilfe, hab mich dazu entschlossen auf die Farbänderung bei einem Designwechsel unter Windof XP zu verzichten.

Mfg Matthias

Dax 10. Dez 2003 07:18

Re: Systemfarben
 
Irgenwie kommt's ein wenig spät, aber die Lick-Farbe wird es wohl nicht geben :cry:
Ich bin selber noch am tüfteln, war schwieriger als ich dachte...

MathiasSimmack 10. Dez 2003 11:23

Re: Systemfarben
 
Zitat:

Zitat von MatthiasW
hab mich dazu entschlossen auf die Farbänderung bei einem Designwechsel unter Windof XP zu verzichten.

Wieso? War dir das zu aufwändig? Wenn dein Programm dann diese auf Blau basierenden Farben benutzt, sieht es (sorry!) blöd aus, wenn jemand ein anderes Theme als "Blau" bzw. andere Farben als die Standards benutzt. Erinnert mich an ein Programm, dass den XP-Fensterstil "Blau" simulierte ... leider auch dann, wenn man selbst ein völlig anderes Theme eingestellt hatte ... :roll:

Na ja. Dabei ist das Prinzip recht einfach. Die Zauberworte heißen WM_THEMECHANGED und WM_SYSCOLORCHANGED. Wenn du es selbst machen willst, dann musst du nur die Farbtöne berechnen. Du nimmst bspw. clHighlight und ermittelst daraus einen helleren Farbton für die Menüfarbe (clHighlight selbst bildet den Rahmen bei Menüeinträgen und Toolbar-Buttons).

Allerdings muss ich sagen, in so einem Fall würde ich das Rad nicht neu erfinden sondern die schon erwähnte Komponente XPMenu benutzen. Die enthält nämlich alles Notwendige, so dass ich mich um diesen Farbkram nicht kümmern muss.

MatthiasW 11. Dez 2003 00:34

Re: Systemfarben
 
Hallo,

Zitat:

Zitat von MathiasSimmack
Wenn dein Programm dann diese auf Blau basierenden Farben benutzt, sieht es (sorry!) blöd aus, wenn jemand ein anderes Theme als "Blau" bzw. andere Farben als die Standards benutzt.

ja aus dem grund wollte ich das eigentlich auch machen und ich hat mir gedacht das es zu einer professionell aussehenden Kompo dazugehört. Ich hat halt gedacht das es dafür Systemfarben (wie zB. clBtnFace) gibt die dann entsprechend einen anderen RGB - Wert zugewiesen bekommen. Da war ich aber schief gewickelt.

Ich denke ich werd mir das XPMenu dochmal genauer zur Brust nehmen :coder: und zu meinem ursprünglichen Plan zurückkehren.

Mfg Matthias

MatthiasW 11. Dez 2003 23:01

Re: Systemfarben
 
Hallo,

Zitat:

Zitat von MathiasSimmack
Na ja. Dabei ist das Prinzip recht einfach. Die Zauberworte heißen WM_THEMECHANGED und WM_SYSCOLORCHANGED. Wenn du es selbst machen willst, dann musst du nur die Farbtöne berechnen. Du nimmst bspw. clHighlight und ermittelst daraus einen helleren Farbton für die Menüfarbe (clHighlight selbst bildet den Rahmen bei Menüeinträgen und Toolbar-Buttons).

also es wäre wirklich schön wenn du dazu nen Link für nähere Infos hättest oder mir das noch etwas genauer erklären könntest, denn ich möchte das ganze dann schon selbst in meiner Kompo machen.

Um zB.: für clHighlight einen helleren Farbton zu ermitteln müsste ich doch wissen um wieviel der heller sein muß, oder lieg ich da jetzt falsch?

Ich hab mir die XPMenu - Kompo nochmal genauer angesehen, aber so nen richtigen plan wie ich zu den Farben kömmen könnte hab ich immer noch net. Und in der Hilfe zu Delphi5 brauch ich gar net erst schauen, weil da eh nix drin steht (zu der Zeit gabs halt noch kein WinXP).

Mfg Matthias

MatthiasW 12. Dez 2003 23:14

Re: Systemfarben
 
Hallo,

tja, weiß net obs jemand interessiert aber auf der Homepage vom Jedi-Project
gibts einen Thememanager, mit dem man sowas machen kann.

Mfg Matthias


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:03 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 by Thomas Breitkreuz