Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows (https://www.delphipraxis.net/211056-so-beheben-sie-den-farbeinstellungsbefehl-fuer-den-aktiven-stil-unter-windows.html)

Daniel 22. Jul 2022 11:24

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.

Rolf Frei 22. Jul 2022 11:48

AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
 
Zitat:

Zitat von neumimnemecky (Beitrag 1509021)
So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows:
Code:
Buffer.Canvas.Brush.Color := TStyleManager.ActiveStyle.GetStyleColor (scWindow);
um es auf Delphi 7 nutzbar zu machen?

Einfach den ganzen TStyleManager Krams löschen und die Farbe direkt setzen (clWindow) oder du nutzt den Themes Manager, der bei D7 dabei ist (ThemeServices in der Unit Themes.pas), wenn du die Themes in deiner eigenen Komponente painten willst. Wenn du aber nur die Farben willst, musst du garnichts weiter machen als die Standard Colors nutzen wie clWindow. clButtonFace, etc. Diese haben in einer themed App automatisch die richten Werte, gemäss Windows Theme.

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

himitsu 22. Jul 2022 12:48

AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
 
Zitat:

Zitat von KodeZwerg (Beitrag 1509052)
Zitat:

Zitat von Delphi.Narium (Beitrag 1509045)
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.

Und per Community Edition eine DLL erstellen die einem fehlende Methoden zur Verfügung stellt?

Eher andersrum, also das Alte mit Delphi 7 in eine DLL und Dieses dann im neuen Delphi / der neuen CE weiter benutzen.

neumimnemecky 22. Jul 2022 12:57

AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1509033)
Zitat:

Zitat von neumimnemecky (Beitrag 1509030)
Es ist unmöglich. Nicht realisierbar. In jeder Beziehung.

Dann musst du u.U. damit leben das deine Frage nicht beantwortbar ist, da
- 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.

Es gibt immer gute Menschen, die bereit sind, den Schwächeren, Verletzlichen oder Gebrechlichen zu helfen.

neumimnemecky 22. Jul 2022 13:01

AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
 
Zitat:

Zitat von KodeZwerg (Beitrag 1509038)
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.

Vielen Dank. Es ist in Ordnung. Genauso wie es für mich "technisch" nicht machbar ist, ein Upgrade durchzuführen. Ich bin es gewohnt, mich zu bescheiden. Jeder handelt im Rahmen seiner Möglichkeiten.

Bernhard Geyer 22. Jul 2022 13:41

AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1509045)
So absolut stimmt das nicht.
Sie ist keine Option, wenn man Bibliotheken nutzen muss, zu denen nur die DCU-Dateien für Delphi 7 vorliegen.

Doch. Es ist immer eine Option.
Es muss halt bewertet werden ob man diese zieht weil das Probjekt noch laenger lebt oder nur noch einen kleinen Fix benoetig

Zitat:

Zitat von Delphi.Narium (Beitrag 1509045)
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.

Wie waere es mit Ausbauen der Komponente_
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

Delphi.Narium 22. Jul 2022 14:18

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 ;-)

himitsu 22. Jul 2022 14:25

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ß.

Rolf Frei 22. Jul 2022 15:37

AW: So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
 
Zitat:

Zitat von KodeZwerg (Beitrag 1509038)
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.

Das ist aber schlicht falsch und nicht wahr. D7 hat seit Windows XP Theme Support und damit kann man das auch machen, nur halt ohne die Delphi Styles, da diese viel Später gekommen sind, aber das ist wohl auch garnicht sein Wunsch. Er will nur wissen, wie man diesen Code für D7 anpasst und da gibt es eben die ThemeServices in D7, die im Prinzip das Selbe machen, nur halt für die Windows Themes und nicht die neueren Delphi Themes (Styles). Auch da gibt ees API Aufrufe die die Farben des aktiven Themes liefern. Es spricht nichts dagegen, dass er diese nutzen kann. Die Frage ist eben nur, ob er er das überhaupt braucht und nicht einfach das ganze Painting Windows machen lassen kann. Anahand seine Einzelziel sehen wir ja leider nicht wo er das genau her hat.

KodeZwerg 22. Jul 2022 20:41

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz