Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Menü Farbe setzen ohne VCL Style zu laden? (https://www.delphipraxis.net/208852-menue-farbe-setzen-ohne-vcl-style-zu-laden.html)

venice2 21. Sep 2021 19:26

Menü Farbe setzen ohne VCL Style zu laden?
 
Ich habe es geschafft eine NonVCL Anwendung in Kombination mit den Styles zu starten.

Mein Problem bzw. die Frage die da wäre kann ich die Menü Farben setzen ohne einen Style zu laden?
Bzw. Kann ich die Farbe die vorher festgesetzt wurde weiterhin verwenden für das System Menü?

Zur zeit verwende ich den Style "Carbon" ist aber nicht das wahre für meinen eigenen definierten Skin!

TurboMagic 21. Sep 2021 19:32

AW: Menü Farbe setzen ohne VCL Style zu laden?
 
Was spricht gegen eine Anpassung des Stils? Natürlich unter neuem Namen. Wenn das eine Option ist, dann Tools/Bitmap Stil Designer...

venice2 21. Sep 2021 19:39

AW: Menü Farbe setzen ohne VCL Style zu laden?
 
Zitat:

Zitat von TurboMagic (Beitrag 1495220)
Was spricht gegen eine Anpassung des Stils? Natürlich unter neuem Namen. Wenn das eine Option ist, dann Tools/Bitmap Stil Designer...

Weil nicht die Styles die Hauptanwendung Design sondern meine eigene "DLL".
Ich möchte die Styles nur verwenden um die Menüs einzufärben. Für nichts anderes.

Wenn ich schon die Farbe vordefiniere möchte ich auch diese für alles verwenden und nicht abhängig von den Styles sein.
So wie du sehen kannst verwendet mein OpenFileDialog keinen Carbon Style obwohl dieser für die Anwendung definiert ist.
Das einzige was aus dem Style Verwendung findet ist die Farbe der System Menüs und Bars.

venice2 21. Sep 2021 21:07

AW: Menü Farbe setzen ohne VCL Style zu laden?
 
Zitat:

Was spricht gegen eine Anpassung des Stils?
Scheint wohl nicht zu funktionieren.

Habe das mal versuchsweise eingebaut.
Warum wird der Style nicht gefunden obwohl vorhanden.

Delphi-Quellcode:
procedure LoadVCLStyles;
var
  s : string;
  LFiles : Types.TStringDynArray;
  StyleInfo: TStyleInfo;
  Path: string;
  f, FileName: string;
begin
  s:=ExtractFilePath(ParamStr(0));
  LFiles:=TDirectory.GetFiles(s, '*.vsf');
  if Length(LFiles)>0 then
  begin
   for f in TDirectory.GetFiles(s, '*.vsf') do
    if TStyleManager.IsValidStyle(f, StyleInfo) and SameText(StyleInfo.Name,
      ExtractFileName(ChangeFileExt(DefSkin, ''))) then
    TStyleManager.LoadFromFile(f)
  end
  else
  begin
    Path := ExtractFilePath(SKAERO_FOLDER);
    FileName := ExtractFileName(ChangeFileExt(DefSkin, ''));
    s:=ResolvePath('Styles', Path);
    for f in TDirectory.GetFiles(s, '*.vsf') do
     if TStyleManager.IsValidStyle(f, StyleInfo) and SameText(StyleInfo.Name, FileName) then
     TStyleManager.LoadFromFile(f); // <<<< läuft bis hier durch sollte also geladen werden.
    StylesPath := f;
  end;
end;
Aber hier meldet er das die Datei nicht gefunden wird.
Delphi-Quellcode:
TStyleManager.TrySetStyle(StylesPath); // Datei inklusive Pfad funktioniert nicht.

TStyleManager.TrySetStyle(ExtractFileName(ChangeFileExt(DefSkin, '')); // Nur Dateiname geht auch nicht.
Stupid!

EDIT:
Ok!
So scheint es zu gehen..
Delphi-Quellcode:
      Path := ExtractFilePath(SKAERO_FOLDER) + 'Styles\';
      StyleName := ExtractFileName(ChangeFileExt(DefSkin, '.vsf'));
      StylesPath := Path + StyleName;
      TStyleManager.SetStyle(TStyleManager.LoadFromFile(StylesPath));
jedoch wenn ich das Design ändere siehe nope.png (ToolTip und Menu Farben)
werden immer noch die alten angezeigt.
Mit unterschiedlichen Styles getestet. Die Farben werden ignoriert bzw. Falsch dargestellt.

Irgendwie nicht das wahre. Das Teil ist zu Fehlerhaft.

venice2 21. Sep 2021 23:49

AW: Menü Farbe setzen ohne VCL Style zu laden?
 
Nur nochmal zur Allgemeinen Information.
Fenster aus C++ Anwendungen *.ax (ActiveX DLL's) werden alle falsch dargestellt.

Tab Schriften sind nicht lesbar, Combo Boxen werden nicht Design.. usw.. macht euch selbst ein Bild!
Ist nicht nutzbar..
Ich vergesse es lieber, aber ein versuch war es wert. Danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:53 Uhr.

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