Thema: Delphi TStylemanager verwenden

Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: TStylemanager verwenden

  Alt 5. Jun 2017, 14:56
Das Problem ist: TStyleManager ist hier unbekannt, auch wenn ich unter Uses beide Units aufführe.
In deinem Sourcecode verwendest du allerdings auch TStylesManager und nicht TStyleManager .

Beispielcodes zur Verwendung von TStyleManager habe ich keinen gefunden.
OK, hier ein bisschen Code für den Anfang. Erstellen eines Sub-Menüs mit allen verfügbaren Styles plus Event zum Wechseln des Style:

Delphi-Quellcode:
  ...
    mnuStyle: TMenuItem;
  private
    FActiveStyle: string;
    procedure SetActiveStyle(const Value: string);
    procedure mnuStyleItemClick(Sender: TObject);
    procedure LoadStyleMenu;
    procedure AddStyleMenuItem(S: string);
  public
    property ActiveStyle: string read FActiveStyle write SetActiveStyle;
  ...

procedure TMainForm.LoadStyleMenu;
var
  arr: TArray<string>;
  S: string;
  systemStyleName: string;
begin
  mnuStyle.Clear;
  arr := TStyleManager.StyleNames;
  TArray.Sort<string>(arr); // alphabetisch sortieren
  systemStyleName := TStyleManager.SystemStyle.Name;
  AddStyleMenuItem(systemStyleName); // Windows immer zuerst
  for S in arr do begin
    if S <> systemStyleName then begin
      AddStyleMenuItem(S);
    end;
  end;
end;

procedure TMainForm.AddStyleMenuItem(const AStyleName: string);
var
  itm: TMenuItem;
begin
  itm := TMenuItem.Create(Self);
  itm.Caption := AStyleName;
  itm.RadioItem := true;
  itm.AutoCheck := true;
  itm.Checked := (AStyleName = TStyleManager.ActiveStyle.Name);
  itm.OnClick := mnuStyleItemClick;
  mnuStyle.Add(itm);
end;

procedure TMainForm.mnuStyleItemClick(Sender: TObject);
begin
  ActiveStyle := (Sender as TMenuItem).Caption;
end;

procedure TMainForm.SetActiveStyle(const Value: string);
begin
  if FActiveStyle <> Value then begin
    FActiveStyle := Value;
    if FActiveStyle = 'then begin
      TStyleManager.SetStyle(nil);
    end
    else begin
      TStyleManager.TrySetStyle(FActiveStyle);
    end;
  end;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat