2017-09-26 123 views
1

我創建FMX在運行時動態到ListBox中編輯數據控制:德爾福firemoneky控制在運行時

Screenshot here

這是大多數部件的做工精細,除了TComboTrackBarTSpinBox,爲儘管有以下代碼,但沒有顯示任何值。

此處可用於紡紗器:

// 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; 

在這種情況下,所有SpinBoxes都應該作爲默認值,顯示0。 如果我點擊右箭頭,我得到1.如果我然後點擊左箭頭,我得到0. 所以行爲是正確的,但控件不顯示正確的起始值。

任何想法可能是錯誤或我的代碼中缺少?

在Windows上,這工作正常。在Android上,這不起作用。

+0

你用什麼德爾福版本?它適用於我在Delphi上的Android 10.2.1 – EugeneK

+0

也適用於什麼風格?它看起來不像標準之一,所以它可能不支持spinbox – EugeneK

+0

感謝您的好建議。我試過沒有StyleBook,它有相同的結果。直到我使用GUI更改值時才顯示值。 Trackbar和SPinBox也是如此。順便說一句, –

回答

0

這是在10.2中固定的,在10.1中看起來像0是特殊值,對我而言有效的是先將它分配給其他值,例如,

SpinBox.Value := 1; 
SpinBox.Value := 0; 
在這種情況下,價值

顯示出來

+0

謝謝EugeneK提供這種明顯的解決方法。當解決方案很簡單時,爲什麼要尋找複雜的東西?感謝您的幫助 –