AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign So beheben Sie den Farbeinstellungsbefehl für den aktiven Stil unter Windows
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von neumimnemecky · begonnen am 21. Jul 2022 · letzter Beitrag vom 3. Aug 2022
Antwort Antwort
Seite 2 von 3     12 3      
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#11

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

  Alt 22. Jul 2022, 12:24
Das ist bei Styles aber keine Option. Und um die geht es - nicht um eine allgemeine Grundsatzdiskussion.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
650 Beiträge
 
Delphi 11 Alexandria
 
#12

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

  Alt 22. Jul 2022, 12:48
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

Geändert von Rolf Frei (22. Jul 2022 um 16:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#13

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

  Alt 22. Jul 2022, 13:48
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.
$2B or not $2B

Geändert von himitsu (22. Jul 2022 um 13:50 Uhr)
  Mit Zitat antworten Zitat
neumimnemecky

Registriert seit: 21. Dez 2018
45 Beiträge
 
#14

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

  Alt 22. Jul 2022, 13:57
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.
  Mit Zitat antworten Zitat
neumimnemecky

Registriert seit: 21. Dez 2018
45 Beiträge
 
#15

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

  Alt 22. Jul 2022, 14:01
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.

Geändert von neumimnemecky (22. Jul 2022 um 14:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#16

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

  Alt 22. Jul 2022, 14:41
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

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
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#17

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

  Alt 22. Jul 2022, 15:18
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#18

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

  Alt 22. Jul 2022, 15:25
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ß.
$2B or not $2B

Geändert von himitsu (22. Jul 2022 um 15:27 Uhr)
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
650 Beiträge
 
Delphi 11 Alexandria
 
#19

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

  Alt 22. Jul 2022, 16:37
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.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#20

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

  Alt 22. Jul 2022, 21:41
Okay, ich entschuldige mich für meine falsche Aussage, mit genug Man-Power kommt man irgendwie an ein Ziel.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:39 Uhr.
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