AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi [XE5] Firemonkey TButton Style zur Laufzeit ändern
Thema durchsuchen
Ansicht
Themen-Optionen

[XE5] Firemonkey TButton Style zur Laufzeit ändern

Ein Thema von stoxx · begonnen am 25. Mär 2014 · letzter Beitrag vom 25. Mär 2014
Antwort Antwort
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#1

[XE5] Firemonkey TButton Style zur Laufzeit ändern

  Alt 25. Mär 2014, 11:18
Hallo, ich mache gerade meine ersten Gehversuche mit Firemonkey mobile, und bräuchte eine kleinen Dankanstoß.
Ich möchte den Style eines TButtons zur Laufzeit ändern.
Mein erster Versuch war, das TStylebook bearbeiten zu wollen, da dies nicht direkt ging, hab ich es in die Datei xx.style abgespeichert, und wollte manuell einen Eintrag zu kopieren und einen neuen hinzufügen und "buttonstyle" in "buttonstyle1" umzubennen.
Nach dem Laden des Styles wurde aber "buttonstyle1" nicht angezeigt, das funktioniert also nicht.
Hab allerdings nicht verstanden, warum?

mein neuer Versuch war, ein zweites Stylebook aufs Formular zu legen, um dort einen "roten" Button im Style zu kreieren.
Aber wie kann ich nun dem einzelnen Button den Style zuweisen, ohne das alle anderen Buttons davon betroffen sind?

Vielen Dank!


Delphi-Quellcode:
  object TLayout
    StyleName = 'buttonstyle'
    DesignVisible = False
    Height = 26.000000000000000000
    Position.X = 384.000000000000000000
    Position.Y = 488.000000000000000000
    Width = 73.000000000000000000
    object TRectangle
      StyleName = 'background'
      Align = alContents
      Fill.Kind = bkGradient
      Fill.Gradient.Points = <
        item
          Color = xFF505050
          Offset = 0.000000000000000000
        end
        item
          Color = xFF303030
          Offset = 1.000000000000000000
        end>
      Locked = True
      Height = 26.000000000000000000
      HitTest = False
      Stroke.Color = xFF222222
      XRadius = 3.000000000000000000
      YRadius = 3.000000000000000000
      Width = 73.000000000000000000
      object TColorAnimation
        Duration = 0.200000002980232200
        PropertyName = 'Fill.Color'
        StartValue = xFF505050
        StopValue = xFF707070
        Trigger = 'IsMouseOver=true;IsPressed=false'
        TriggerInverse = 'IsMouseOver=false;IsPressed=false'
      end
      object TColorAnimation
        Duration = 0.200000002980232200
        PropertyName = 'Fill.Color'
        StartValue = xFF707070
        StopValue = xFF404040
        Trigger = 'IsPressed=true'
        TriggerInverse = 'IsPressed=false'
      end
    end
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: [XE5] Firemonkey TButton Style zur Laufzeit ändern

  Alt 25. Mär 2014, 11:55
Der iOS Style wird immer geladen. Daher musst Du Deinen Style umbenennen und den Namen dann im StyleLookup des Buttons eintragen. Dem Elternformular des Buttons ist dann das Stylebook zuzuweisen.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#3

AW: [XE5] Firemonkey TButton Style zur Laufzeit ändern

  Alt 25. Mär 2014, 12:34
Der iOS Style wird immer geladen. Daher musst Du Deinen Style umbenennen und den Namen dann im StyleLookup des Buttons eintragen. Dem Elternformular des Buttons ist dann das Stylebook zuzuweisen.
Also dem Formular hab ich ein (das) Stylebook zugewiesen.
Wenn ich dem Elternformular ein alternatives Stylebook zuweise, dann ändert sich leider die Farbe aller TButtons.
Irgendwie lässt sich aber das Stylebook auch nicht bearbeiten, so dass ich den oben gezeigten "Text" hinzufügen könnte.

Im Moment probiere ich mit Android.

Oder könntest Du denn vielleicht bitte eine kleine Demo App zusammenklicken, für eine "firemonkey mobile" .
Kleine App mit zwei TButtons mit 2 verschiedenen Farben?
Danke, falls Du soviel Zeit haben solltest.

Gruß stoxx
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: [XE5] Firemonkey TButton Style zur Laufzeit ändern

  Alt 25. Mär 2014, 12:46
Anbei die App. Hat 3 verschiedene Button-Styles:
  • RedRoundButtonStyle
  • refreshtoolbutton
  • <ohne>

und die werden alle gleichzeitig und korrekt angezeigt.
Miniaturansicht angehängter Grafiken
mobilebuttonstyles.png  
Angehängte Dateien
Dateityp: zip MobileStyles.zip (2,3 KB, 11x aufgerufen)
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#5

AW: [XE5] Firemonkey TButton Style zur Laufzeit ändern

  Alt 25. Mär 2014, 14:00

und die werden alle gleichzeitig und korrekt angezeigt.
Hallo .. erstmal vielen Dank, aber das ist noch nicht ganz das, was ich wollte.


ich habe jetzt zur Style Datei ein ein TLayout "BlueRoundButtonStyle" hinzugefügt.
Und obwohl ich in die die Property vom Button2 "BlueRoundButtonStyle" eingetragen hat, bleibt der Button Grau ohne Style.
im StyleLookUp steht auch nach einem Neustart der IDE "BlueRoundButtonStyle" nicht zur Verfügung.

Die MobileStyles.style sieht derzeit so aus:

Delphi-Quellcode:
object TStyleContainer
  object TLayout
    StyleName = 'RedRoundButtonStyle'
    DesignVisible = False
    Height = 52.000000000000000000
    Position.X = 424.000000000000000000
    Position.Y = 494.000000000000000000
    Width = 118.000000000000000000
    object TRoundRect
      StyleName = 'background'
      Align = alContents
      Fill.Kind = bkGradient
      Fill.Gradient.Points = <
        item
          Color = xFFD40F0F
          Offset = 0.108974359929561600
        end
        item
          Color = claWhite
          Offset = 1.000000000000000000
        end>
      Fill.Gradient.StartPosition.X = 0.500000000000000000
      Fill.Gradient.StartPosition.Y = 1.000000000000000000
      Fill.Gradient.StopPosition.X = 0.499999970197677600
      Fill.Gradient.StopPosition.Y = 0.000000000000000000
      Height = 52.000000000000000000
      Width = 118.000000000000000000
      object TInnerGlowEffect
        StyleName = 'InnerGlowEffect'
        Softness = 0.400000005960464500
        GlowColor = xFF4F4848
        Opacity = 0.899999976158142100
        Trigger = 'IsPressed=true'
      end
    end
    object TText
      StyleName = 'text'
      Align = alContents
      Color = claWhite
      Height = 52.000000000000000000
      Text = 'AAA'
      Width = 118.000000000000000000
    end
  end
object TLayout
    StyleName = 'BlueRoundButtonStyle'
    DesignVisible = False
    Height = 52.000000000000000000
    Position.X = 424.000000000000000000
    Position.Y = 494.000000000000000000
    Width = 118.000000000000000000
    object TRoundRect
      StyleName = 'background'
      Align = alContents
      Fill.Kind = bkGradient
      Fill.Gradient.Points = <
        item
          Color = xFF0F0FD4
          Offset = 0.108974359929561600
        end
        item
          Color = claWhite
          Offset = 1.000000000000000000
        end>
      Fill.Gradient.StartPosition.X = 0.500000000000000000
      Fill.Gradient.StartPosition.Y = 1.000000000000000000
      Fill.Gradient.StopPosition.X = 0.499999970197677600
      Fill.Gradient.StopPosition.Y = 0.000000000000000000
      Height = 52.000000000000000000
      Width = 118.000000000000000000
      object TInnerGlowEffect
        StyleName = 'InnerGlowEffect'
        Softness = 0.400000005960464500
        GlowColor = xFF48484F
        Opacity = 0.899999976158142100
        Trigger = 'IsPressed=true'
      end
    end
    object TText
      StyleName = 'text'
      Align = alContents
      Color = claWhite
      Height = 52.000000000000000000
      Text = 'AAA'
      Width = 118.000000000000000000
    end
  end
end
Miniaturansicht angehängter Grafiken
style.png  
Angehängte Dateien
Dateityp: zip MobileStylesDemoBlue.zip (1,3 KB, 14x aufgerufen)
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: [XE5] Firemonkey TButton Style zur Laufzeit ändern

  Alt 25. Mär 2014, 14:07
Also ich habe Deinen blauen Button in mein Stylebook eingefügt und es funktioniert bestens. Was steht bei Dir in Form1.StyleBook (Siehe mein erster Post - Dem Elternformular des Buttons ist dann das Stylebook zuzuweisen)? Leider fhlt die f,x Datei in Deinem Zip, so dass ich hier nur raten kann.
Miniaturansicht angehängter Grafiken
mobilebuttonstylesblue.png  
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all

Geändert von Union (25. Mär 2014 um 14:10 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#7

AW: [XE5] Firemonkey TButton Style zur Laufzeit ändern

  Alt 25. Mär 2014, 14:14
Also ich habe Deinen blauen Button in mein Stylebook eingefügt und es funktioniert bestens.
>edit< .. jetzt gehts bei mir auf einmal auch, ich konnte das Stylebook laden.
Nur, warum geht das jetzt?
Ich hatte vorhin mit einem umfangreichem Stylebook genau das gleiche probiert, und da konnte er das Stylebook nicht laden.
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  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 06:45 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