AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Styles - Best practices

Ein Thema von Rollo62 · begonnen am 7. Mai 2015 · letzter Beitrag vom 9. Mai 2015
Antwort Antwort
Rollo62

Registriert seit: 15. Mär 2007
3.408 Beiträge
 
Delphi 11 Alexandria
 
#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
Benutzerbild von Harry Stahl
Harry Stahl

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

AW: Styles - Best practices

  Alt 7. Mai 2015, 18:44
Was hier bei mir gut funktioniert:

* Die Verwendung eines Stylesbooks.
* Für jede Plattform eine Ansicht erstellen
* Stylebook in Master leer lassen
* Dann in jeder Ansicht den entsprechenden Style direkt in das Stylebook laden.

Sorgen um die Ressourcen brauchst Du Dir da nicht zu machen, da nur die Style-Ressourcen für die jeweilige Plattform verwendet werden (sprich diese Informationen in die jeweilige .fmx-Datei geschrieben werden).
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.408 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Styles - Best practices

  Alt 8. Mai 2015, 06:59
Hallo Harry,

ja dankesehr für die Antwort.
Das hatte ich so zuerst auch ausprobiert, denn das ist wohl die Vorgehensweise die Emba vorsieht.
EIN StyleBook, MEHRERE Styles jeweils pro View.
Vielleicht war mein Problem damit das ich das Stylebook schon im Master verbunden hatte, muss ich gleich mal checken.

Nur leider kann ich dann immer noch nicht sehen welcher Style wirklich geladen ist, und da ich noch öfters
IDS Abstürze und dergleichen habe ist es sehr mühsam zu kontrollieren welcher Style drin ist
und welcher womöglich nicht.
Ich traue der Sache eben noch nicht (seit XE7)
Eigentlich muss ich am Projekt abeiten und fummele nun schon seit drei Tagen an den Styles herum.

Meine Hoffnung war auch das ein einmal gesetztes Multi-Styling mit Save im Editor gespeichrt werden kann,
aber auch da scheint immer nur der jeweils gesetze View gespeicher zu werden.
Gibt es dafür eine Lösung, dann könnte man das separat mit Load/Save verwalten und wäre nicht mehr so mühsam
über den Editor zu erreichen.

Rollo

Geändert von TBx ( 8. Mai 2015 um 07:16 Uhr) Grund: fullquote entfernt
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.408 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Styles - Best practices

  Alt 8. Mai 2015, 09:42
Hallo Harry,

es scheint an dem MasterView zu liegen.
Wenn man erst im FormCreate
Code:
StyleBook := StyleBookSterling;
zuordnet scheint es zu funktionieren.

Aber ist das wirklich der "beste" Weg zum StyleManagement ?

Ich muss nochmal den StyleManager mit LoadFromResource ausprobieren, vieleicht ist das sinnvoller.
Hat sonst keiner einen Vorschlag wie man die Styles optimal verwendet ?

Mein Problem im Moment das ich ein Projekt das unter XE7 auf Win7 ganz gut lief jetzt auf
XE8 Win8.1 gezogen habe, und ich kurz davor stehe wieder zurück zu XE7 zu gehen.
Beide VmWare Maschinen sind recht "clean" insbesondere die neue Win8.1.
Ich habe ständig Memory Errors, IDE Abstürze, etc. und ich habe da auch verstärkt die Styles im Verdacht,
weil beim Wechsel im StyleEditor schonmal einfach die IDE abstürzen kann.

Rollo
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.033 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Styles - Best practices

  Alt 8. Mai 2015, 09:43
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 Plattform).
??? Du linkst doch den Style mit einem IFDEF... Also hast Du doch nur den/die Styles im Programm die auch für die entsprechende Plattform da sind...

Oder habe ich da etwas falsch verstanden?

Mavarik
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.408 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Styles - Best practices

  Alt 8. Mai 2015, 12:42
Hallo Mavarik,

nur die Zuordnung StyleBook := StyleBookXxx zu den verschiedenen Platformversionen.
Ich habe es erstmal alles auf der MainForm, also sind die 4 StyleBooks alle gelinkt und brauchen Speicher.

Wenn ich die Stylebooks in 4 Forms setzen würde, dann könnte mal über IFDEF nachdenken,
das war ja mein Versuch dafür DataModules (der natürliuche Weg) zu benutzen.
Aber leider müssen es wohl Forms sein, weil een im DataModules keine Views auswählbar sind.

Aber der ganze Aufwand um in Forms auszulagern, da ist es sicher einfacher das per LoadFromResource
oder per Asset und LoadFromFile zu regeln.

Ich sträube mich nur etwas dagegen, weil es ja eigentlich das StyleBook regeln sollte, das ist dafür gemacht.

Rollo
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

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

AW: Styles - Best practices

  Alt 8. Mai 2015, 17:38
Seit XE7 muss man das nicht mehr mit IFDEF's machen, sondern kann das eben viel komfortabler mit EINEM StyleBook machen, in das man in der jeweiligen Ansicht gleich den gewünschten Style (also schon zur Designzeit) lädt. Das hat auch den Vorteil, dass man schon zur Designtime die Oberfläche im gewünschten Stil betrachten und gestalten kann.

In die Exe wird dann je nach kompilierter Plattform nur der dazugehörige Style gelinkt (also aus der "Unit.Windows.fmx" oder eben "Unit.Macintosh.fmx" bzw. die mobilen Forms). Das hat mit der Vererbung zu tun, die so ähnlich wie bei den Frames funktioniert. In der Masteransicht hat das Stylebook keinen Inhalt. Alle anderen Ansichten erben also von diesem StyleBook erst mal: nichts. Dann kommt eben nur das dazu, was in der entsprechenden Ansicht geladen wurde. Und nur das geht in die Exe rein. Also kein Ressourcen-Problem.
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

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

AW: Styles - Best practices

  Alt 8. Mai 2015, 18:29
Mein Problem im Moment das ich ein Projekt das unter XE7 auf Win7 ganz gut lief jetzt auf
XE8 Win8.1 gezogen habe, und ich kurz davor stehe wieder zurück zu XE7 zu gehen.
Rollo
Das wäre evtl. zu überlegen. Wie gerade im XE8-Fehlerthread berichtet, gibt es auch noch Probleme mit dem Styles (http://www.delphipraxis.net/1300758-post178.html). Falls Dich das in Deiner Projekt-Konstellation auch betreffen sollte, könnte da eine Menge Zusatzarbeit fällig werden...

Wenn Du nicht gerade dringend XE8 wegen IOS (64-Bit) brauchst, wäre es vielleicht besser noch mit XE7 weiter zu arbeiten, bis XE8-Update 1 raus ist und dann den Wechsel auf XE8 zu machen.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.408 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Styles - Best practices

  Alt 9. Mai 2015, 14:13
Hallo Harry,

vielen Dank für die Info, das ist sehr nützlich.

Wie ich recht verstehe wird ab Juni JEDER das IOS64 Problem haben der bei Apple
eine neue Anwendung listen will ...

Roll
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 03:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf