2016-01-25 143 views
0

我正在寻找一种方式来获得一定的德尔福Firemonkey TTrackbar行为改变 在我的德尔福10.1西雅图Android应用程序。TTrackbar从右至左,而不是从左到右

我想实现什么? 轨迹栏有一个用户可以移动的拇指。它在轨道上运行,并且从拇指离开的轨道的一侧,直到轨道 的左端将默认为彩色以指示用拇指选择的值。

我希望它相反:轨道权从拇指到右端它 应具有这种颜色。

我指出成风格已经是方向,但学习一点关于那些我还没有完全明白该怎么做我的情况,我开始怀疑,只是改变了风格将工作之后。

我放弃了在窗体上TTrackbar,右单击它并选择“编辑 自定义样式”。我发现有一个htrack,它由 背景,一个TRectangle和一个TStyleObject的高亮组成。 作为一个TStyleObject,它通过 SourceLookup和SourceLink链接到一个PNG文件中的一个区域。但是我的智慧停止了。

  1. 如何找到PNG?
  2. 即使我找到它,下一步该做什么?我不想改变 那个“高亮”TStyleObject的外观,我想改变它的 的位置。我已经试着让它正确定位,但这只是解决方案的一部分,因为 运行时的宽度计算也需要“倒置”(1-x)。

回答

3

而是修改样式,考虑旋转的TrackBar。将属性RotationAngle设置为180,将属性Value设置为与Max相同(如果您想让拇指最初位于左侧)。然后,当使用Value计算它时,例如如:

procedure TForm21.TrackBar1Change(Sender: TObject); 
begin 
    Label1.Text := IntToStr(trunc((Sender as TTrackBar).Max - 
           (Sender as TTrackBar).Value)); 
end; 

视觉上看起来是这样的:评论后

Trackbar orientation change


编辑

事实证明,与180°旋转不上真正的工作由OP向Embarcadero质量门户网站报告的Android设备(至少不是某些型号)(RSP-13156

+0

我很抱歉地说这个:但是你的答案和它看起来一样好(我自己已经有180度的想法了),表明你没有在真正的Android设备上测试它。至少在D10西雅图TrackBars旋转角度> 85度(实际上可能是84或86,开始表现奇怪,180度旋转的TTrackbar只在表单设计器中显示,在设备上它是不可见的,即使它仍然有反应我有责任将其报告到Quality Portal:[link](https://quality.embarcadero.com/browse/RSP-13156) 但是,谢谢你试图帮助我! – Markus

+1

@Markus Arrgh。这是真的我没有在真实设备上测试(我没有任何Android)。人们可能会期望Emba通过FMX在这些年中筛选出这些基本错误。当然,我投票支持你的RSP。我在答案中做了一个笔记。 –