Frage

Mit Delphi 7 versucht, die Farbe der Titelleiste der Software aus dem Fenster Thema zu ändern. Ich habe Code gesehen mit dem Sie alle Titelleisten aller Programme ändern kann, aber ich bin zu wollen, nur mein Programm ändern.

Wer gesehen / getan etwas Vergleichbares? Ich habe nichts dagegen für eine Komponente zu bezahlen, wenn nötig.

War es hilfreich?

Lösung

Ich glaube, Windows die WM_NCPAINT Nachricht an eine Anwendung, wenn es den Fensterrahmen einschließlich der Titelleiste malen soll. Das Standardverhalten ist zurück in den Standard-Windows-Handler fallen, die den Standardrahmen ziehen. Sie könnten diese ersetzen oder neu malen die Titelleiste Abschnitt direkt nach.

Das sieht wie ein gutes Beispiel: http: //delphi.about. com / od / adptips2006 / qt / draw_captionbar.htm

Andere Tipps

Die Antwort von Stijn ist nicht vollständig abgeschlossen, als die Beschriftung und Rand des Fensters wird auch neu gezeichnet werden, wenn es (de-) aktiviert. Also zusätzlich WM_NCPAINT Sie auch WM_NCACTIVATE behandeln müssen. Leider kann dies nicht einfach ersetzt werden, wie es in den Standard-Nachrichten-Handler anderer Code ist (abgesehen von der Zeichnung Code), die ausgeführt werden muss. Aber die Prozedur Standard Aufruf wird wiederum zu der Standard-Beschriftung und Grenze zuerst gezogen wird, was würden Sie dann über Ihre beabsichtigte Farbe ziehen müssen, in Flimmern zur Folge hat.

Eine Möglichkeit, dies zu umgehen, ist die Zeichnung Region anzupassen, die die Standard-Nachrichtenhandler aufgerufen werden. Siehe "Drawing titlebar auf XP mit Themen " für ein Beispiel mit dem Windows-API-Aufrufe, die Delphi leicht übersetzen sollte. Beachten Sie, dass diese befasst sich nur mit dem Text in der Titelleiste, aber das Prinzip gilt.

Sie können einen Blick auf eine Häutung Bibliothek nehmen. ExpressSkin von DevExpress ist gut.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top