AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VCL Style wird nicht mehr gesetzt :-(

Ein Thema von haentschman · begonnen am 18. Sep 2024 · letzter Beitrag vom 20. Sep 2024
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#1

VCL Style wird nicht mehr gesetzt :-(

  Alt 18. Sep 2024, 11:05
Hallöle...

Seit wann der Style nicht mehr gesetzt wird...keine Ahnung. Keiner sagt irgendwas. Die 5 User, die einen anderen Style haben, hätten meckern sollen...nö.

Unsere Anwendung hat einen Default Style in Blau (VCL Luna, DevExpress Office2010Blue). Die Entwicklung ist auch in Blau. Der Style wird entsprechend einer Einstellung in den StyleManager "übertragen". Zu Test habe ich den FCurrentStyle := styBlack gesetzt.
Delphi-Quellcode:
// setzen der Preferences der Anwendung (Style)
if FileExists(FPreferencesCommon.DictionaryFolder[ftProgramFolder] + conFileNameUserModifiedSytle) then
begin
  Ini := TMemIniFile.Create(FPreferencesCommon.DictionaryFolder[ftProgramFolder] + conFileNameUserModifiedSytle, TEncoding.UTF8);
  try
    dmStyle.CurrentStyle := TCommonStyle(Ini.ReadInteger('ModifiedStyle', 'Style', 0));
  finally
    Ini.Free;
  end;
end
else
begin
  dmStyle.CurrentStyle := FPreferencesCompany.CompanyStyle;
end;
...
procedure TdmStyle.SetCurrentStyle(const Value: TCommonStyle);
begin
  FCurrentStyle := Value;
  case FCurrentStyle of
    styBlack:
      begin
        TStyleManager.TrySetStyle('Obsidian', True);
        FCurrentDevStyleName := conDevStyleNameBlack;
        FCurrentDevLayout := conDevLayoutBlack;
        FCurrentColors.CurrentTreeFocus := conTreeFocusObsidian;
        FCurrentColors.CurrentTreeFocusBorder := conTreeFocusObsidianBorder;
        FCurrentColors.CurrentTreeTextColor := conTreeTextColorObsidian;
        FCurrentColors.CurrentTreeBackground := conTreeBackgroundObsidian;
        FCurrentColors.CurrentBackground := conBackgroundObsidian;
        FCurrentColors.CurrentBackgroundSplash := conBackgroundObsidianSplash;
      end;
    styBlue:
      begin
        TStyleManager.TrySetStyle('Luna', True);
        FCurrentDevStyleName := conDevStyleNameBlue;
        FCurrentDevLayout := conDevLayoutBlue;
        FCurrentColors.CurrentTreeFocus := conTreeFocusLuna;
        FCurrentColors.CurrentTreeFocusBorder := conTreeFocusLunaBorder;
        FCurrentColors.CurrentTreeTextColor := conTreeTextColorLuna;
        FCurrentColors.CurrentTreeBackground := conTreeBackgroundLuna;
        FCurrentColors.CurrentBackground := conBackgroundLuna;
        FCurrentColors.CurrentBackgroundSplash := conBackgroundLunaSplash;
      end;
    stySilver:
      begin
        TStyleManager.TrySetStyle('Silver', True);
        FCurrentDevStyleName := conDevStyleNameSilver;
        FCurrentDevLayout := conDevLayoutSilver;
        FCurrentColors.CurrentTreeFocus := conTreeFocusLight;
        FCurrentColors.CurrentTreeFocusBorder := conTreeFocusLightBorder;
        FCurrentColors.CurrentTreeTextColor := conTreeTextColorLight;
        FCurrentColors.CurrentTreeBackground := conTreeBackgroundLight;
        FCurrentColors.CurrentBackground := conBackgroundLight;
        FCurrentColors.CurrentBackgroundSplash := conBackgroundLightSplash;
      end;
  end;
end;
Problem:
Alle VCL Componenten (roter Rahmen) sind Blau trotz TStyleManager.TrySetStyle('Obsidian', True) = True Im Menüfenster (Bild1) ist das linke Panel (grüner Rahmen) manuell auf eine dunkleres Grau gesetzt...

Was ich geändert habe in der letzten Zeit:

1. Verlagerung von verschiedenen Units in einen "Base" Ordner
2. Verlagerung von verschiedenen Forms in einen "Base" Ordner
3. Projekt auf die neuen Ordner angepaßt...compiliert fehlerfrei.
4. Datenmodul dmStyle ist auch verlagert.
5. Der Quellcode des Setzen des Styles hat sich nicht geändert.
6. Die Componenten Style Einstellungen sind unverändert.


Nach was muß ich schauen?

Danke.
Miniaturansicht angehängter Grafiken
bild2.jpg   bild1.png  

Geändert von haentschman (18. Sep 2024 um 12:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: VCL Style wird nicht mehr gesetzt :-(

  Alt 18. Sep 2024, 11:27
Sind die Styles auch "wirklich" einkompiliert oder werden mitgeliefert?
(bei das RuntimePackage benutzt, bzw. die entsprechende Style-Unit in der EXE drin)

Im Designer zieht es sich ja die Styles übers DesignTimePackage.



Aber ob jetzt Delphis VCL-Styles mit denen von DevExpress kompatibel sind?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (18. Sep 2024 um 11:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#3

AW: VCL Style wird nicht mehr gesetzt :-(

  Alt 18. Sep 2024, 11:49
Der Style Code ist seit Jahren unverändert im Projekt, und eincompiliert, drin. Seit wann das so ist...keine Ahnung. Zwischenzeitlich habe ich auch auf 12.1 gewechselt...
Zitat:
Aber ob jetzt Delphis VCL-Styles mit denen von DevExpress kompatibel sind?
...deswegen gibt es für die VCL Komponenten VCL Styles und für die DevExpress Komponenten DevExpress Styles.
Miniaturansicht angehängter Grafiken
style.png  

Geändert von haentschman (18. Sep 2024 um 12:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: VCL Style wird nicht mehr gesetzt :-(

  Alt 18. Sep 2024, 13:50
Wobei viele DevExpressKomponenten (ala Button, Edit oder ComboBox, aber abgesehn von den Grids) ja auf den VCL-Komponenten aufsetzen. (in einer ContainerKlasse verwurschtelt)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#5

AW: VCL Style wird nicht mehr gesetzt :-(

  Alt 20. Sep 2024, 06:59
Moin...

keiner hat eine Idee? Was muß ich kontrollieren? Wo setze ich Breakpoints im System?

Lösung:
Vorab: Ich denke, daß ich das selbst war, weil ich in der Entwicklung, in den Forms, den Style "Luna", wegen der Positionierung, eingestellt habe.

Der in der Form im OI eingtragene Style Name, in diesem Falle "Luna", blockierte das Ändern des Styles zur Laufzeit der kompletten Form! Trotz Setzen des anderen Styles blieb die gesamte Form auf "Luna". Ob das so gewollt ist, ist mir ein Rätsel. Der Style sollte sich über das Ändern im StyleManager anpassen...

Fazit:
In der Entwicklung den Style leer lassen, es sei denn, daß für das Control ein fester Style gewünscht wird. Ansonsten grundsätzlich den Standard Style in der IDE auswählen.
Miniaturansicht angehängter Grafiken
style.png   ide.png  

Geändert von haentschman (20. Sep 2024 um 13:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.534 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: VCL Style wird nicht mehr gesetzt :-(

  Alt 20. Sep 2024, 12:58
Moin...

keiner hat eine Idee? Was muß ich kontrollieren? Wo setze ich Breakpoints im System?
Hast Du mal unter Projekt, Erscheinungsbild kontrolliert, ob da etwas anderes als "Windows" steht?

Ansonsten könntest Du in der Unit, wo "TrySetStyle" ausgeführt wird, einen Breakpoint setzen, um zu kontrollieren, ob es irgendwo evtl einen weiteren Aufruf gibt.

Wenn du die Styledateien nicht als separate Dateien auslieferst, sondern einkompiliert sind, könntest Du zur Not (als WorkAround) die Eigenschaft "Stylename" direkt in der Form zur Laufezeit (oder vorher) setzen, wo es problematisch ist (oder auch bei einzelnen Komponenten).
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#7

AW: VCL Style wird nicht mehr gesetzt :-(

  Alt 20. Sep 2024, 13:34
Lösung siehe #5

Danke...
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#8

AW: VCL Style wird nicht mehr gesetzt :-(

  Alt 20. Sep 2024, 14:00
Der in der Form im OI eingtragene Style Name, in diesem Falle "Luna", blockierte das Ändern des Styles zur Laufzeit der kompletten Form! Trotz Setzen des anderen Styles blieb die gesamte Form auf "Luna". Ob das so gewollt ist, ist mir ein Rätsel. Der Style sollte sich über das Ändern im StyleManager anpassen...
Das ist nicht nur tatsächlich so gewollt, sondern auch so dokumentiert: Stile auf Steuerelementebene
Zitat:
2. Verwenden Sie die Eigenschaft TControl.StyleName zum Definieren des jeweiligen Stils für jedes Steuerelement oder Formular. Der Wert von StyleName muss mit einem der Namen der Stile in den Projektoptionen übereinstimmen. Ein Steuerelement kann den für sein übergeordnetes Steuerelement definierten StyleName verwenden. Sie können also die Eigenschaft StyleName eines Formulars festlegen, damit alle Steuerelemente auf dem Formular einen bestimmten Stil verwenden.

Standardmäßig ist TControl.StyleName leer und Steuerelemente verwenden einen Standardstil. Sie können StyleName auf Windows festlegen, um die Anwendung eines Stils für Steuerelemente oder Formulare zu deaktivieren. Wenn Sie den Namen eines Stils angeben, der sich nicht in den geladenen VCL-Stilen befindet, dann erhält das Steuerelement den Standardstil.
Der erwähnte Standardstil ist halt der über TrySetStyle festgelegte.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#9

AW: VCL Style wird nicht mehr gesetzt :-(

  Alt 20. Sep 2024, 14:10
Zitat:
Das ist nicht nur tatsächlich so gewollt, sondern auch so dokumentiert:
...wer hat denn zum Lesen Zeit. ...aber das hätte ich nicht gefunden.
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.534 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: VCL Style wird nicht mehr gesetzt :-(

  Alt 20. Sep 2024, 23:21
Lösung siehe #5

Danke...
Gerne. Das mit dem mixen der Styles finde ich übrigens eine tolle Geschichte, da man da sehr viele Möglichkeiten hat, sein Design zu gestalten.
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:51 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