Thema: Delphi TStylemanager verwenden

Einzelnen Beitrag anzeigen

Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#1

TStylemanager verwenden

  Alt 4. Jun 2017, 14:14
Delphi-Version: XE8
Hi zusammen

Wennich schon beim austesten bin, dann kann ich auch mal die Sachenn um TStylemanager ausprobieren - dachte ich mir und hab dann zur Designtime ein Style eingebunden. Damit sieht dann meine Projektunit so aus:
Delphi-Quellcode:
program SQLiteTestProject;

uses
  Vcl.Forms,
  SQLiteTestMainUnit in 'SQLiteTestMainUnit.pas{SQLiteTestMain},
  DMLSQLiteUnit in 'DMLSQLiteUnit.pas{DMLSQLite: TDataModule},
  PathFinderFrameUnit in 'PathFinderFrameUnit.pas{PathFinderFrame: TFrame},
  Vcl.Themes,
  Vcl.Styles,
  ModifyBitClass in 'ModifyBitClass.pas';

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  TStyleManager.TrySetStyle('Golden Graphite');
  Application.CreateForm(TSQLiteTestMain, SQLiteTestMain);
  Application.Run;
end.
Und da vermeinte ich doch den Fehler gleich zu sehen: unter uses sind Vcl.Themes und Vcl.Styles aufgeführt. Ich hingegen hatte in meiner Unit nur gerade eine der beiden eingebunden...(**)

So verpasste ich der Mainform eine Combobox, über die einer der verfügbaren Styles ausgewählt werden kann/soll:
Delphi-Quellcode:
interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
...
  Vcl.Buttons, Vcl.Samples.Spin, Vcl.Menus, Vcl.Themes, Vcl.Styles;

//** Wie ich schon angedeutet habe, war hier erstmal nur VCL.Themes aufgeführt; das Hinzufügen von VCL.Styles hat jedoch nichts geändert


procedure TSQLiteTestMain.CmbxStylesCloseUp(Sender: TObject);
begin
  CmbxStyles.Items.AddStrings(TStylesManager);
end;
Bei ersten Tests ist mal alles themenbezogene hier in dieser Prozedur. Ausgelagert kann, soweit sinnvoll, immer noch werden (ZB die Combo bei Programmstart füllen).
Das Problem ist: TStyleManager ist hier unbekannt, auch wenn ich unter Uses beide Units aufführe.
TStyleManager ist als 'sealed' deklariert (Embarcadero.DelhiXE8), es kann also keine Instanz erstellt werden.
Beispielcodes zur Verwendung von TStyleManager habe ich keinen gefunden.

Was läuft da schief?

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat