Einzelnen Beitrag anzeigen

Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.058 Beiträge
 
Delphi 10 Seattle Enterprise
 
#16

AW: Wo ist das original Style der Controls?

  Alt 15. Apr 2018, 20:11
Hallo Zusammen,

zumindest bei meinem Android 6.0.1 Device funktioniert es nicht.

Mit Button2 lade ich den Style AndroidJet.style in den TStyleManager. Der Style wird geladen und umgestellt. Funktioniert einwandfrei.
Mit Button1 lade ich den default Style, funktioniert ebenfalls einwandfrei.
Mit Button3 frage ich jetzt jeweils den StyleName und gebe es jeweils in Edit1 + Edit2 aus. Der Style Name ist jedes mal leer.

Delphi-Quellcode:
procedure TForm1.bt1Click(Sender: TObject);
begin
  //Auf Tag Style schalten (den default Style verwenden)

  TStyleManager.SetStyle(nil);
end;

procedure TForm1.bt2Click(Sender: TObject);
var StylePath: string;
begin
  //Auf Nacht Style schalten
  StylePath := TPath.GetSharedDocumentsPath + PathDelim + 'fmxstyles' + PathDelim;
  TStyleManager.SetStyleFromFile(StylePath + 'AndroidJet.style');

end;

procedure TForm1.bt3Click(Sender: TObject);
var MeinStil: TFmxObject;

begin
  edit1.text := TStyleManager.ActiveStyle(nil).StyleName;

  MeinStil := TStyleManager.ActiveStyle(nil);

  edit2.text := MeinStil.StyleName;

end;

Mittlerweile mache ich das jetzt anders.
Die Methode TStyleManager.SetStyleFromFile dauert in meiner Android Anwendung mit einigen Controls 5 Sekunden zum laden. Also muss der Anwender für jedes Umschalten 5 Sekunden warten.
Jetzt mache ich es wie folgt: Auf der Form habe ich drei StyleBooks. StyleBooks1 hat keinen Style damit ich den default Style nutzen kann. Die Anwendung wird also mit default Style geladen. Ich benötige zwei weitere Styles zur Auswahl. StyleBooks1 + StyleBooks2 werden bei OnCreate über einen Thread geladen. Das dauert die gleiche Zeit also 10 Sekunden insgesamt, weil es in einem Thread läuft ist es egal. Auf das Style umschalten geht dann Pfeil schnell.


Delphi-Quellcode:

procedure TfrMain.FormCreate(Sender: TObject);
begin
  TThread.CreateAnonymousThread(procedure
  begin
    TThread.Synchronize(TThread.CurrentThread, Procedure
    var StylePath: string;
    begin


      StylePath := TPath.GetSharedDocumentsPath + PathDelim + 'fmxstyles' + PathDelim;

      sb2.LoadFromFile(StylePath + INIStyle1);
      sb3.LoadFromFile(StylePath + INIStyle2);

      actStyle.Enabled := true;

    end);
  end).Start;


end;


procedure TfrMain.actStyleExecute(Sender: TObject);
begin
  actStyle.Checked := not actStyle.Checked;

  if actStyle.Checked
  then frMain.StyleBook := sb3
  else frMain.StyleBook := sb2;


end;



Gruß Kostas
  Mit Zitat antworten Zitat