2017-09-26 3 views
1

Je crée FMX contrôle à la volée lors de l'exécution de modifier les données dans un ListBox:delphi des contrôles firemoneky lors de l'exécution

Screenshot here

Il fonctionne très bien pour la plupart des composants, à l'exception des TComboTrackBar et TSpinBox, pour dont aucune valeur n'est affichée malgré le code suivant.

Voici le SpinBox:

// Create the SpinBox 
SpinBox:= TSpinBox.Create(InternalLayout); 
With SpinBox do 
begin 
    Parent:= InternalLayout; 
    Name:= 'sb' + ASubParameter.Name; 
    BeginUpdate; 
    Align:= TAlignLayout.Client; 
    Size.PlatformDefault:= False; 
    HitTest:= True; 
    Margins.Top:= 1; 
    Margins.Bottom:= 1; 
    Min:= ASubParameter.Minimum; 
    Max:= ASubParameter.Maximum; 
    DecimalDigits:= 3; 
    KeyboardType:= TVirtualKeyboardType.NumberPad; 
    case AParameter.ParamType of 
     TParameterType.ptShortInt, TParameterType.ptInteger: 
     begin 
      ValueType:= TNumValueType.Integer; 
      Value:= ASubParameter.ValueDefault.ToInteger; 
     end; 
     TParameterType.ptSingle, TParameterType.ptDouble: 
     begin 
      ValueType:= TNumValueType.Float; 
      Value:= ASubParameter.ValueDefault.ToSingle; 
     end; 
     end; 
    Enabled:= not(ASubParameter.ReadOnly); 
    OnChange:= ASubParameter.OnChanged; 
    EndUpdate; 
end; 

Dans ce cas, tous les spinbox sont censés afficher 0 comme valeur par défaut. Si j'appuie sur la flèche droite, j'obtiens 1. Si je tape ensuite la flèche gauche, j'obtiens 0. Donc le comportement est correct, mais les contrôles n'affichent pas correctement la valeur de départ.

Une idée de ce qui pourrait être faux ou manquant dans mon code?

Sur Windows, cela fonctionne bien. Sur Android, cela ne fonctionne pas correctement.

+0

Quelle est la version Delphi utilisez-vous? Cela fonctionne pour moi sur Android sur Delphi 10.2.1 – EugeneK

+0

Aussi quel style utilisez-vous? Il ne ressemble pas à un des standards, donc peut-être qu'il ne supporte pas correctement les spinbox – EugeneK

+0

Merci pour la bonne suggestion. J'ai essayé sans le StyleBook et il a le même résultat. La valeur ne s'affiche pas tant que j'utilise l'interface graphique pour modifier la valeur. C'est pareil pour Trackbar et SPinBox. –

Répondre

0

Ceci est corrigé en 10.2, en 10.1 ressemble à 0 est une valeur spéciale, ce qui a fonctionné pour moi est de l'assigner à une autre valeur en premier, par ex.

SpinBox.Value := 1; 
SpinBox.Value := 0; 

cette valeur de cas apparaît

+0

Merci EugeneK pour cette solution de contournement évidente. Pourquoi chercher des choses compliquées quand la solution peut être assez simple? Merci pour votre aide –