![]() |
So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows:
Code:
um es auf Delphi 7 nutzbar zu machen?
Buffer.Canvas.Brush.Color := TStyleManager.ActiveStyle.GetStyleColor (scWindow);
|
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Zitat:
|
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Zitat:
|
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Zitat:
- Immer weniger solche uralte Delphi-Versionen nutzen - Immer weniger Lust haben für solche uralte Delphi-Versionen Lebenszeit zu investieren um anderen zu helfen, wenn das Problem mit neuen Versionen gar nicht mehr existiert. |
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Da es unter Delphi 7 keine Styles gibt, und somit das Fenster eh immer im Windows-Standard gezeichnet wird, würde an der Stelle nicht etwas wie
Delphi-Quellcode:
das machen, was möglicherweise gewollt ist? :gruebel:
Buffer.Canvas.Brush.Color := clWindow;
|
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
TStyleManager.ActiveStyle.GetStyleColor holt sich nun mal über Vcl.Themes die Informationen, da es das unter Delphi 7 nicht gibt, gibt es auch keine Alternative.
Es ist wie "Wie kann ich mit Delphi 7 für Linux kompilieren, FMX erstellen etc..." es ist technisch nicht machbar. |
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Zitat:
|
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Zitat:
Sie ist keine Option, wenn man Bibliotheken nutzen muss, zu denen nur die DCU-Dateien für Delphi 7 vorliegen. Und bei Fremdkomponenten von anno 2002, zu denen es damals nur die DCUs gab und die nicht für neuere Delphis zur Verfügung stehen, bleibt man halt bei Delphi 7 hängen. |
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Und ein Update von Delphi 7 auf Delphi 10 oder 11 ist insgesamt ein Problem. Vor allem bei großen Projekten bedeutet eine Umstellung einen wahnsinnigen Aufwand. Bei uns hat die Umstellung eines großen Projektes (geschätzt knapp 2,5k Units) fast ein halbes Jahr gedauert und konnte nur realisiert werden, da es von einer externen Person die so etwas schon einmal gemacht hat vorgenommen wurde. Von daher ist ein Update nicht wirklich problemlos möglich.
|
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Zitat:
|
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Das ist bei Styles aber keine Option. Und um die geht es - nicht um eine allgemeine Grundsatzdiskussion.
|
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Zitat:
Da man aber anhand deines Codes nicht sieht, wo das benötigt wird, ist es schwer zu sagen wie du das da machen musst. Vermutlich kannst du auch einfach die ganze Zeile löschen, da in einer themed Anwendung (mit einem Manifest) die Windows Themes eh genutzt werden und du dich da garnicht um das Painten kümmern musst. Die Aussage D7 habe keine Styles ist so nicht richtig. Es gab da noch keine Delphi eigenen Styles, aber die Windows Styles (Themes) stehen da zur Verfügung. Über die Themes API könntest du auch die einzlenen Farbwerte abfragen. (siehe GetThemeColor / GetThemeSysColor in UxTheme.pas) Beispiel D7 Code zum Painten einer eigenen themed Progressbar die auf einem TGraphicControl basiert:
Delphi-Quellcode:
aRect := ClientRect;
if ThemeServices.ThemesEnabled then begin Details := ThemeServices.GetElementDetails(tpBar); ThemeServices.DrawElement(Bmp.Canvas.Handle, Details, aRect); aRect := ThemeServices.ContentRect(Bmp.Canvas.Handle, Details, aRect); ChunkWidth := aRect.Right - aRect.Left; FFillWidth := ChunkWidth - Round(ChunkWidth * (100.0 - FillPercent) / 100.0); aRect.Right := aRect.Left + FFillWidth; Details := ThemeServices.GetElementDetails(tpChunk); ThemeServices.DrawElement(Bmp.Canvas.Handle, Details, aRect); with Bmp.Canvas do begin if aShowText then begin Font.Assign(Self.Font); Font.Color := clWindowText; Brush.Style := bsClear; ThemeServices.DrawText(Handle, Details, aText, ClientRect, DT_CENTER or DT_VCENTER or DT_SINGLELINE, 0); end; end; end |
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Zitat:
|
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Zitat:
|
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Zitat:
|
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Zitat:
Es muss halt bewertet werden ob man diese zieht weil das Probjekt noch laenger lebt oder nur noch einen kleinen Fix benoetig Zitat:
Haben wir auch gemacht um dann doch mal den Umstieg zu machen. Im nachhinein aergert man sich nur das man das nicht schon frueher gemacht hat |
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Komponenten ausbauen geht nur, wenn man 'ne Alternative hat.
Wenn da aber was fremdes, individuell erstelltes, vorliegt, das zwar funktioniert, aber ansonsten von seiner Funktionalität her eine BlackBox ist und die Hersteller der Komponenten nicht mehr erreichbar sind, wird es dann doch schon schwierig. Zumindest für Hobbyprogrammierer. Profis, mit endlos großem Budget, können sich das schon leisten ;-) |
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Du hast eben die Qual der Wahl:
* alles so lassen, wie es ist (nichts Neues verwenden können/dürfen) * versuchen das Neue in eine DLL zu kapseln und es im Alten nutzen * den problematischen alten Teil in DLL verschieben und dann den Rest auf Neu umstellen * das Alte raus und was Neues dafür * * eventuell mit weniger Funktionen * * oder mit etwas mehr Ümstellungsaufwand * das Alte ersatzlos raus Je länger man aber wartet, um so mehr bleibt man in der Sackgasse hängen und verläuft sich noch viel tiefer darin. Bzw. hat immer mehr neuen Aufwand, um das Alte am Leben zu halten, je länger man wartet. Der Umstieg wird also nur noch immer schwerer und schwerer ... vor allem wenn man immer mehr gefrickel einbaut ... das dann irgendwann aufzulösen macht bestimmt noch weniger Spaß. |
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Zitat:
|
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Okay, ich entschuldige mich für meine falsche Aussage, mit genug Man-Power kommt man irgendwie an ein Ziel.
|
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Zitat:
Wieso in 95% der Antworten auf sowas wie Generics, Unicode, lokale Variablendeklaratino verzichten, wenn man das auch in nur 5% muss Zitat:
EmbeddedWB war mit aktuellen Delphis nicht mehr nötig und jetzt fliegt auch IE-Nutzung raus und Edge kommt rein. Ebenfalls eine Bibliotheken konnten entsorgt werden, da jetzt Delphi alles mitbringt (z.B. PNG) Auch ein Workaround wegen Abstürzen auf Multi-Sockelsystemen (gerne auf TerminalServices/Citrix-Umfeld zu finden) konnte ins nil-Device verschoben werden. |
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Zitat:
Ich würde sicherlich nicht mehr zu ein Arbeitsstelle welchseln die bei einem solch alten IDE-Version bleiben will. |
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Zitat:
![]() |
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Zitat:
Code:
clwindow ist die standard Fensterfarbe des aktiven Windows Theme.
Buffer.Canvas.Brush.Color := clWindow
Noch eine Sache. Lazarus ist zu Delphi7-code recht kompatibel bzw. kann deutlich mehr. Es ist eine gute Plattform um Legacy Delphi 7 Projeke zu pflegen ohne sie großartig weiter zu entwickeln. Mit dem festhalten an Delphi7 tust Du Dir keinen gefallen. Was du hier massiv aufgebaut hast nennt man "Technical Debt". Und die "Zinsen" die du dafür zahlst diese Schulden nicht zu zahlen werden immer größer. Das projekt wird sich immer aufwändiger verändern und am laufen halten. Du wirst für kleinste Änderungen Tagelang in Foren nach Lösungen suchen müssen oder Lösungen selber entwickeln müssen für die es fertigen Kode gäbe hättest du dein Projekt nur mal auf einen aktuellen stand gebracht! Tatsache ist das Profis sich so einen Rückstand eher leisten können als Hobbyisten, denn Profis können ein Projekt das mal eine Cashcow war und gemolken wurde bis zum geht nicht mehr auch einfach unter Wirtschaftlichkeits aspekten sterben lassen. Du willst aber vermutlich nicht neu anfangen? |
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Zitat:
Delphi-Quellcode:
procedure TForm1.DrawSpectrum;
begin // clear background // Buffer.Canvas.Brush.Color := TStyleManager.ActiveStyle.GetStyleColor (scWindow); Buffer.Canvas.Brush.Color := clWindow; Buffer.Canvas.FillRect(Rect(0, 0, Buffer.Width, Buffer.Height)); // Rest wie gehabt end; |
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Naja, wenn man die aktuelle Farbe des aktuellen Styles haben will, dann brauchte man es.
clWindow ist ja die Standardfensterhintergrundfarbe, wie sie im aktuellen Windows ist. |
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Zitat:
|
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Zitat:
|
AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:26 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