我有一个 TTrackBar 和一个 TMediaPlayer,我正在寻找一种使用 LiveBindigs 功能根据 TMediaPlayer 位置更改 TTrackBar 位置的方法。
问题是,TMediaPlayer 上没有观察TMediaPlayer.Position
属性变化的事件,所以我TTrackBar.Position
无法同步。
是否可以在不触发事件的情况下观察组件属性的变化?
我有一个 TTrackBar 和一个 TMediaPlayer,我正在寻找一种使用 LiveBindigs 功能根据 TMediaPlayer 位置更改 TTrackBar 位置的方法。
问题是,TMediaPlayer 上没有观察TMediaPlayer.Position
属性变化的事件,所以我TTrackBar.Position
无法同步。
是否可以在不触发事件的情况下观察组件属性的变化?
如果没有合适的事件,就不可能监视某些属性的变化。
而且您也不希望将任何事件绑定到 MediaPlayer.Position 属性。为什么?
例如,当您播放视频时,每一帧的位置都会发生变化,这意味着当以 30 FPS 播放视频时,此类事件将每秒触发 30 次。因此,根据该事件中的代码,它可以快速使您的应用程序陷入困境。
所以我能给你的最好建议是让你在你的表单上放置一个计时器,然后每隔一段时间检查媒体播放器的位置以更新你的 TrackBar。我相信一秒钟的间隔就足够了,但如果你愿意的话,你可以缩短它。
只要确保如果您还使用 TrackBar 来寻求使用某些控制变量的能力,以查看 TrackBar 位置是由用户还是由您的计时器更新。其他虎钳你最终会出现奇怪的口吃(第一次发生在我身上)。
至于仅通过 LiveBindings 实现所有这些,我认为这是不可能的。