通过LiveBindings同步TMediaPlayer.Position和TTrackBar.Position

时间:2016-03-31 19:03:50

标签: delphi delphi-xe2 livebindings

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

问题是,TMediaPlayer上没有事件可以观察TMediaPlayer.Position属性的更改,因此我的TTrackBar.Position无法同步。

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

1 个答案:

答案 0 :(得分:2)

如果没有合适的事件,不可能监控某些财产的变化。

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

例如,当您正在播放视频时,每个帧都会更改一个位置,以便在播放具有30 FPS此类事件的视频时每秒会被触发30次。因此,根据该事件中的代码,它可以快速使您的应用程序爬行。

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

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

至于单独使用LiveBindings实现这一切,我认为不可能。