Einzelnen Beitrag anzeigen

Rollo62

Registriert seit: 15. Mär 2007
3.908 Beiträge
 
Delphi 12 Athens
 
#1

Styles - Best practices

  Alt 7. Mai 2015, 09:57
Hallo zusammen,

ich habe jetzt XE8 am Laufen, aber schon bei XE7 ist mir das StyleBook Prinzip nicht ganz klar geworden.

Laut Manual soll der Style gewählt werden, und dann mit StyleBook Editor Load der jeweilige Platformstyle geladen werden.

- Das scheint aber in EINEM Stylebook wie zu erwarten nicht zu funktionieren.

- Meine Versuche EIN Stylebook mit dem Editor - Add mehrere Styles zuzuordnen sahen erstmal gut aus, allerdings
sind dabei redundante "Ghosteinträge" im Stylebookeditor.
Auch scheint kein Eintrag die Platform zu definieren,
es gibt immer nur ein PlatformTaget pro File, und pro StyleBook (ist das richtig ?)

- Dann der Versuch mit MEHREREN StyleBooks zu arbeiten, also sbWin, sbMac, sbIos, ....
Vorher die Platfrom und Style auswählen und dann mit Form-Streaming in den jeweils angelegten Views
Streamingformen für IOS, Android, Win, ...) das richtige Stylebook anzupassen.
Aber es kommen immer noch Meldungen das der Style nicht zum OS passt.

Letzteres lag wohl daran das im Master schon ein Stylebook verbunden war,
die Meldung kommt vor einem FormCreate ereignis.

- Weil das alles extrem unzuverlässig scheint ist meine aktuelle Lösung die folgende:
# mehrere Stylebooks (sbWin, sbMac, ...)
# Jedes Stylebook wird mit Load und nor EINEM, dem entsprechenden Platformstyle gefüllt
# Die Mainform bekommt erstmal KEIN Stylebook zugeordnet (um die kein-Style-für-OS Meldung zu verhindern)
# Dann in FomCreate mache ich die Zuordnungen (auch mit einer Zusatzabfrage um echten OSX von IOS zu unterscheiden:
Code:
{$IFDEF MSWINDOWS}
  StyleBook := StyleBookRadiantWin;
{$ENDIF MSWINDOWS}

{$IF DEFINED(MACOS) and not DEFINED(IOS) }
  StyleBook := StyleBookRadiantOSX;
{$ENDIF DEFINED(MACOS) and not DEFINED(IOS) }

{$IFDEF IOS}
  StyleBook := StyleBookRadiantIOS;
{$ENDIF IOS}

{$IFDEF ANDROID}
  StyleBook := StyleBookRadiantAND;
{$ENDIF ANDROID}
Erst das scheint mir sauber und klar.


?? Bin ich mit dieser Lösung auf der richtigen Spur, oder habe ich hier den Wald vor lauter Bäumen nicht gesehen ?
Ich möchte jedenfalls ein klares Stylemanagement, ohne Hidden magic, was ich auch nach einen halben Jahr noch ohne
IDE Abstürze nachvollziehen kann.

Weil das StyleBook favorisiert wird suche ich die Lösung erstmal da.
Mit dem StyleManager habe ich mich noch nicht befasst, scheint aber mächtiger zu sein ...

Mein Problem damit ist die gewaltige Ressourcenverschwendung, wenn 5 Stylbook nahezu dasgleiche im Speicher haben
(sind mal so eben 500K bis 2MB pro Style und Platform).

Ich könnte noch versuchen das in DataModules auszulagern, aber da funktionierte zumindest bei XE7 der Styleeditor nicht korrekt, der erwartet anscheinend das Stylebooks auf eine Form geworfen werden

Wie ist eure Meinung dazu, was ist der beste Weg eine MultiPlatform Styles Anwendung zu schreiben ?
Ich hoffe auf Erleuchtung.

Rollo

Geändert von Rollo62 ( 7. Mai 2015 um 10:24 Uhr)
  Mit Zitat antworten Zitat