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 2     12   
Benutzerbild von KodeZwerg
KodeZwerg

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

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

  Alt 22. Jul 2022, 11:17
Es ist unmöglich. Nicht realisierbar. In jeder Beziehung.
Die Community Edition ist immer eine Option die man in Betracht ziehen könnte.
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.

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?
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.224 Beiträge
 
Delphi 10.4 Sydney
 
#2

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

  Alt 22. Jul 2022, 13: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
Rolf Frei

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

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

  Alt 22. Jul 2022, 11: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 15:26 Uhr)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.031 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 1. Aug 2022, 14:33
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?
Ich glaube die Systemfarbcodes sind in der Graphics unit in Delphi7
Code:
Buffer.Canvas.Brush.Color := clWindow
clwindow ist die standard Fensterfarbe des aktiven Windows Theme.

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?
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty ( 1. Aug 2022 um 14:45 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 23:30 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-2025 by Thomas Breitkreuz