AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Buttons & TImageList, wann ist Glyph accessible ?
Thema durchsuchen
Ansicht
Themen-Optionen

Buttons & TImageList, wann ist Glyph accessible ?

Ein Thema von Rollo62 · begonnen am 13. Mai 2015 · letzter Beitrag vom 15. Mai 2015
Antwort Antwort
Rollo62

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

Buttons & TImageList, wann ist Glyph accessible ?

  Alt 13. Mai 2015, 16:40
Hallo zusammen,

ich habe mit den neuen Optionen XE8 ImageList herumgespielt, und die (Speed)Buttons
haben ja jetzt Images und ImageIndex (Gott sei dank).

Allerdings keine Möglichkeit des Einstellens (leider nicht so schön separat anspechbar wie im ListView).

Deshalb wollte ich einmal den Glyph anpacken und ändern, wie üblich mache ich sowas einmalig in FormCreate.

Code:
procedure TForm1.TryToAccessImage(fromHere: String);
var
  btnGlyph: TGlyph;
  fmxGlyph: TFmxObject;

begin

  fmxGlyph := Button1.FindStyleResource('glyphstyle');
  if Assigned(fmxGlyph) then
  begin
    Memo1.Lines.Add('Try Button in ' + fromHere + ' = OK');

    btnGlyph := TGlyph(fmxGlyph);
    btnGlyph.BeginUpdate;
    try
      btnGlyph.Align := TAlignLayout.Client; //  FGlyphSize := TSizeF.Create(FGlyph.Width, FGlyph.Height);
    finally
      btnGlyph.EndUpdate;
    end;
  end
  else
    Memo1.Lines.Add('Try Button in ' + fromHere + ' = failed');
Musste allerdings feststellen, das der Glyph noch gar nicht existiert, und wie in meinem Testprogramm
erst in der LookupStyle eines jeden Buttons auftaucht.

Das ist aber sehr unschön, weil dann jedesmal die OnApplyStyle der Buttons aufgerufen werden muss.

Vielleicht hat jemand eine Idee wie ich die Glyphs schon früher erzeugt bekomme.
DoApplyStyles hilft leider anscheinend auch nicht weiter.

Vermutlich werden die Glyphs wirklich erzeugt wenn sie gebraucht werden, also kurz vor dem Rendern.
Sehr schön effektiv, hilft mir aber leider nicht weiter.

Anbei noch ein paar Bilder von allen Platformen, so wie es Orginal ist, und
mit dem grossen Icon, so wie ich gerne hätte.

Rollo
Miniaturansicht angehängter Grafiken
clipboard01_win.jpg   clipboard02_ios.jpg   clipboard03_osx.jpg   clipboard04_and.jpg  
Angehängte Dateien
Dateityp: zip T03_BtnGlyphAccess.zip (10,8 KB, 1x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

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

AW: Buttons & TImageList, wann ist Glyph accessible ?

  Alt 14. Mai 2015, 00:08
Ja, das stimmt, viele FMX-Objekte stehen tatsächlich erst zur Verfügung, wenn die Form bzw. das Control einmal angezeigt wurde.

Für bestimmte Fälle kann man dann z.B. mit einem Timer arbeiten, der nach onshow einmal aktiviert wird, dann kannst Du Deine Arbeiten an dem Control vornehmen.

Im vorliegenden Fall ginge es aber doch viel einfacher, wenn Du einen benutzerdefinierten Style erzeugst und bei den entsprechenden Buttons dann zur Design- oder zur Laufzeit der Eigenschaft "StyleLookup" den gewünschten Buttonstyle zuweist (also nicht dem Event OnApplyStyleLookup).

Anliegend Dein Beispiel mal entsprechend angepasst.
Miniaturansicht angehängter Grafiken
sbrun.jpg   sbdesign.jpg  
Angehängte Dateien
Dateityp: zip Glyph.zip (34,9 KB, 7x aufgerufen)

Geändert von Harry Stahl (14. Mai 2015 um 00:10 Uhr)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.116 Beiträge
 
Delphi 12 Athens
 
#3

AW: Buttons & TImageList, wann ist Glyph accessible ?

  Alt 14. Mai 2015, 23:05
Hallo Harry,

dankesehr für deine Mühe.

Du hast natürlich recht: Styles sind perfekt.
In dem Fall mit einem neuen Button-Style kann man damit auch noch leben.

Aber ich habe trotzdem meine Problme damit wenn es mal grössere Mengen CustomStyles gibt:
- der StyleEditor ist nicht gerade WYSIWYG und einfach zu bedienen. Einmal falsch gecklickt und alles kann futsch sein.
Das Editieren ist ziemlich frickelig, oder man muss es jeden Tag machen um das gut zu kennen.

- ich hatte schon diverse Darstellungsfehler, oder ich hatte Mehrfacheinträge die nicht erreichbar waren.

- Der ganzen Editorstabilität traue ich noch nicht ganz.
Ich befürchte das der StyleEditor / StyleBook / Umschaltung der Views noch nicht so stabil arbeiten
Das ist zu viel IDE-Magic für meinen Geschmack.

- Neue Styles aus VectorShapes zu basteln ist natürlich supereffizient, man muss es natürlich auch machen.
Mir ist da meine IconLibrary mit tausenden Symbolen noch lieber.

- das Konzept für CrossPlatform IOS,AND,etc. jeweils separat mit LoadStyle in den Editor, aber man darf nicht vergessen
VORHER den Style umzustellen damit das sauber arbeitet.
Dann mit AddStyle im Editor evtl. eigene Styles laden.
Das ist bei vielen verschiedenen Styles sehr fummelig, und schlecht überschaubar

- das Exportieren scheint nur für jeweils die gewählte Platform zu funktionieren, ich kann also
nicht alle Styles eines Stylebooks zusammen exportieren.

- Vermutlich gibt es noch Änderungen am Style-System

- Die Styles sind noch nicht so richtig dokumentiert, wie z.B. werden die Kategorieen Button/TabSheet/etc. bestimmt,
das hat bei meinen Versuchen damit nicht immer funktioniert das es im Designer auftaucht.

- Wie ist der Sourceverweis der Regions auf die PNG-Tapete mit allen Shapes geregelt, da gibt es auch keinen
bequemen Editor mit dem man sich ein Teil-Icon rauszoomen kann.
Da muss man wohl die Pixelpositionen von Hand (oder mit dem Taschenrechner) zusammenschieben.

- Ich habe den MonkeyStyler gefunden, aber ist das besser,stabiler
und wird es überhaupt gut gepflegt (ist für XE4) ?
Wenn so ein externer Editor komfortabel und empfehlenswert ist könnte man sich das zulegen, aber es muss eben
die Fragen oben abstellen können.

Ich schwanke so zwischen den Styles und den ImageListen, hat beides Vor- und Nachteile für mich.
Wenn der StyleEditor schon mehr RAD-mäßig aussehen würde wäre mir wohler.

Bist du schon voll auf die Styles eingestiegen, oder geht es dir ähnlich ?

Rollo
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

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

AW: Buttons & TImageList, wann ist Glyph accessible ?

  Alt 15. Mai 2015, 10:49
Du hast Recht, der Style-Editor hat den Beta-Status bislang nicht überwunden und produziert hin und wieder ärgerliche Fehler.

Daher gilt hier: Sicherheitskopien sind das A & O. Insbesondere, wenn man vorhat ein paar Änderungen am Style zu machen, den letzten Arbeitsstand sichern (also echte Sicherheitskopie).

Kleiner Tipp, wenn Du sagst, bestimmte Dinge konntest Du nicht erreichen: Exportiere den Style dann einfach als Datei. Dann erhältst Du eine lesbare Textdatei und kannst die nach Belieben in einem Texteditor verändern und später wieder zurück lesen. Du solltest dabei natürlich wissen, was Du tust.

Du lädst in der Master-Ansicht keinen Style in das StyleBook, sondern nur in der jeweiligen View den gewünschten Style. Wenn Du das einmal erledigt hast, ist automatisch alles richtig. Du kannst dann ja pro Plattform die Anpassungen an den Style vornehmen. Brauchst Du das öfters, dann speicherst Du eben den geänderten Style und verwendest ihn im nächsten Projekt.

Die Notwendigkeit an Styles zu arbeiten ergibt sich für mich eigentlich nur, wenn ich bei bestimmten Controls eine andere Darstellung erreichen möchte. Das macht aber maximal nur 1% der ganzen Arbeit am Programm aus. Also einmal erledigen und dann vergessen.

Ja, die Wahrscheinlichkeit, dass es auch künftig Änderungen am Style-System geben wird, ist sehr hoch. Allerdings ist das letztlich nichts besonderes, es gibt auch viele Komponenten-Sammlungen, da ändert sich etwas von der einen zur anderen Version, mit der Folge von notwendigen Anpassungen für Dein Programm.

Der MonkeySteyler war ein guter Ansatz. Ich hatte mal Kontakt zum Entwickler aufgenommen, er entwickelt das Teil leider nicht mehr weiter, für die aktuellen Delphis ist es nicht verwendbar.

Auf die Imagelist habe ich sehr lange gewartet und werde diese nun intensiv nutzen, weil das die Arbeit an vielen Stellen erleichtert. Vorhandene Projekte werde ich allerdings tatsächlich erst auf XE8 umstellen, wenn das Update 1 raus ist.

Ich habe kein Interesse daran, eigene Styles zu entwickeln, im Vordergrund steht immer die Funktionalität des Programms. Halbwegs modern sollte das Programm natürlich dennoch aussehen. Da reichen mir aber die mitgelieferten Styles und die passe ich eben bei Notwendigkeit ein wenig an.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: Buttons & TImageList, wann ist Glyph accessible ?

  Alt 15. Mai 2015, 11:58
@Harry Wieso glyphstyle align Client und nicht top...

Bei Client verändert sich die Größe des Glyph immer mit den Button (es sei den das ist gewollt).

Mavarik
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.116 Beiträge
 
Delphi 12 Athens
 
#6

AW: Buttons & TImageList, wann ist Glyph accessible ?

  Alt 15. Mai 2015, 12:08
nochmal zu den Styles:

Um das so wie gewünscht hinzubekommen muss man

1. Verschiedene (verschieden benannte) ButtonStyle-Einträge für jede Platform im StyleBook erzeugen (Win, Mac, And, etc.)
soehe Bild (01)

2. Dazu müssen verschiedene ButtonStyle-Eintrage für jeden View mit Custom Edit erzeugt werden (Win, Mac, And, etc.)
Das geht NUR im View Master, mit dem jeweils vorausgewählten Style (siehe Bild 06).

3. Es MÜSSEN verschiedene Views angelegt werden, für die gewünschten Platformen.
siehe 02

4. Dann würde ich im StyleBook Editor im View-MAster den ganzen Style speichern, und
extern mit einem TextEditor die Styles mit sinnvollen Namen vergeben, und
danach die geänderte *.styles Datei wieder im StyleBook laden (vorher ClearAll nicht vergessen).
Code:
object TStyleContainer
  object TLayout
    StyleName = 'SpeedButtonBigStyle_Win'
    Position.X = 259.000000000000000000
    Position.Y = 232.000000000000000000
    Size.Width = 177.000000000000000000
    Size.Height = 81.000000000000000000
    Size.PlatformDefault = False
    Visible = False
    TabOrder = 0
    object TButtonStyleObject
      StyleName = 'background'
5. In den einzelnen Views MÜSSEN dann die entsprechenden StyleLookups den neuen Namen zugeordnet werden.
(und besser keinen Vergessen)

6. Dann kann man in jedem View das entsprechende Platformabhängige Ergebnis sehen.
siehe 03,04,05


Das geht, und XE8 mit den ImageLists zeigt auch alle Views auf den Geräten richtig an.

Aber der Aufwand ist bei vielen Styles erheblich.
Auch müsste man das immer nachpflegen wenn man mal generell einen neuen Style (z.B. Radiant)) laden möchte, keine
Ahnung wie man das am Besten verwaltet, ich denke es bleibt bei verschiedenen externen *.style Files mit dem TextEditor.

Rollo
Miniaturansicht angehängter Grafiken
01_clipboard01.jpg   02_clipboard02.jpg   06_clipboard06.jpg  
Angehängte Dateien
Dateityp: zip _Pics.zip (101,2 KB, 0x aufgerufen)
Dateityp: zip S4SpeedButtonBigIcon4.zip (360,6 KB, 0x aufgerufen)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.116 Beiträge
 
Delphi 12 Athens
 
#7

AW: Buttons & TImageList, wann ist Glyph accessible ?

  Alt 15. Mai 2015, 12:10
Hallo Mavarik,

ja das ist richtig, in meinem Fall auch gewollt, weil ich das genrne maximiert hätte.

Aber es geht im Wesentlichen erstmal ums Prinzip, wie und wann man am Besten den Style anfasst.

Edit: Im Orginal ist die Darstellung zu winzig.
Es sollte so aussehen wie die StyleLookups, wenn man das im Objectinspector anschaut, und es geht eben um die
beste (einfachste) Methode wie man sich solche neuen StandardGlyphs für alle Platformen erzeugen kann.


Rollo

Geändert von Rollo62 (15. Mai 2015 um 12:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: Buttons & TImageList, wann ist Glyph accessible ?

  Alt 15. Mai 2015, 12:31
Hallo Mavarik,

ja das ist richtig, in meinem Fall auch gewollt, weil ich das genrne maximiert hätte.

Aber es geht im Wesentlichen erstmal ums Prinzip, wie und wann man am Besten den Style anfasst.

Edit: Im Orginal ist die Darstellung zu winzig.
Es sollte so aussehen wie die StyleLookups, wenn man das im Objectinspector anschaut, und es geht eben um die
beste (einfachste) Methode wie man sich solche neuen StandardGlyphs für alle Platformen erzeugen kann.
Gemischte Styles für alles Plattformen? Hmm...

BTW.: Ich finde es etwas verwirrend, den jetzt gibt es Styles die einen Button mit einem Glyph aus dem "Big.png" erzeugen und
es gibt welche aus ImageListen...

Was ist mit den Styles wie Diamond... Ich lade z.B. meinen globalen Style in den StyleManager da ich nicht auf jedes Formular ein Stylebook klicken will...

Mischen sich die Styles aus dem StyleManager und eigene Styles im Form? Hab ich noch nicht getestet...

Mavarik
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.116 Beiträge
 
Delphi 12 Athens
 
#9

AW: Buttons & TImageList, wann ist Glyph accessible ?

  Alt 15. Mai 2015, 15:10
Hallo Mavarik,

ja, sorry.
Ich habe den Vorschlag von Harry etwas erweitert, nicht nur einen Style sonder inclusive Styles _Win, _Max_ _And, ...

Hatte auch schon versucht mehrere StyleBooks zu verwenden, und umzuschalten.
Ich weiss eben nicht genau wie die IDE beim Umschalten der Views und Styles arbeitet.
Das hätte ich bei etwas grösseren Projekten gerne klarer.

Im Prinzip ist die SpeedButton Mitte/Unten das was ich möchte.

Aber ja: Alles in einem Source für alle Plattformen wenn es geht. Das verspricht Fmx doch (und funktioniert sogar) ...

Oder gibt es etwa bessere, einfachere Vorschläge das zu managen (auch mit mehreren verschiedenen Styles für verschiedene Kunden) ?
(ala MonkeyStyler, oder ext. Texteditoren, ..).

Zitat:
Mischen sich die Styles aus dem StyleManager und eigene Styles im Form?
Genau darauf läuft es ja hinaus, kann man ? sollte man ? wenn ja warum nicht ?

Bin für alle Vorschläge offen die mein Leben leichter machen

Rollo

Geändert von Rollo62 (15. Mai 2015 um 15:14 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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