1

我有一个 TTrackBar 和一个 TMediaPlayer,我正在寻找一种使用 LiveBindigs 功能根据 TMediaPlayer 位置更改 TTrackBar 位置的方法。

问题是,TMediaPlayer 上没有观察TMediaPlayer.Position属性变化的事件,所以我TTrackBar.Position无法同步。

是否可以在不触发事件的情况下观察组件属性的变化?

4

1 回答 1

2

如果没有合适的事件,就不可能监视某些属性的变化。

而且您也不希望将任何事件绑定到 MediaPlayer.Position 属性。为什么?

例如,当您播放视频时,每一帧的位置都会发生变化,这意味着当以 30 FPS 播放视频时,此类事件将每秒触发 30 次。因此,根据该事件中的代码,它可以快速使您的应用程序陷入困境。

所以我能给你的最好建议是让你在你的表单上放置一个计时器,然后每隔一段时间检查媒体播放器的位置以更新你的 TrackBar。我相信一秒钟的间隔就足够了,但如果你愿意的话,你可以缩短它。

只要确保如果您还使用 TrackBar 来寻求使用某些控制变量的能力,以查看 TrackBar 位置是由用户还是由您的计时器更新。其他虎钳你最终会出现奇怪的口吃(第一次发生在我身上)。

至于仅通过 LiveBindings 实现所有这些,我认为这是不可能的。

于 2016-04-01T20:54:03.590 回答