关于 StringGrid 滚动时的焦点问题
我的程序是这样的,有两个 Form A 和 B, A 是主窗口
在 B 中有一个 StringGrid , 里面有比较多的数据,
现在需要让 B->StringGrid 中的数据滚动显示, 我用的一个定时器, 定时调用 StringGrid->Perform(WM_VSCROLL, SB_LINEDOWN, 0);
结果发现这么做有点问题, StringGrid->Perform(WM_VSCROLL, SB_LINEDOWN, 0); 会让焦点转到 B->StringGrid 上
会影响用户在 A 中的操作,
现在我在 StringGrid->Perform(WM_VSCROLL, SB_LINEDOWN, 0); 的前后保存 和恢复当前焦点,
只能是部分的解决了问题。
如果 A 中有弹出菜单之类的,在 失去焦点后,菜单就自动关掉了。。。
不知道这种情况该怎么处理?谢谢了
--
试了一下 TMemo 的滚动貌似没这个问题。
在 B 中有一个 StringGrid , 里面有比较多的数据,
现在需要让 B->StringGrid 中的数据滚动显示, 我用的一个定时器, 定时调用 StringGrid->Perform(WM_VSCROLL, SB_LINEDOWN, 0);
结果发现这么做有点问题, StringGrid->Perform(WM_VSCROLL, SB_LINEDOWN, 0); 会让焦点转到 B->StringGrid 上
会影响用户在 A 中的操作,
现在我在 StringGrid->Perform(WM_VSCROLL, SB_LINEDOWN, 0); 的前后保存 和恢复当前焦点,
只能是部分的解决了问题。
如果 A 中有弹出菜单之类的,在 失去焦点后,菜单就自动关掉了。。。
不知道这种情况该怎么处理?谢谢了
--
试了一下 TMemo 的滚动貌似没这个问题。
...全文
相关推荐
Delphi StringGrid只读设置教程[可运行源码]
第三种方式依赖OnExit事件,在编辑器失去焦点时进行校验与回滚。
c++builder stringgrid类
- **FixedCols/FixedRows**:指定固定列或行的数量,这些列或行在滚动时保持可见,常用于显示标题或关键信息。
stringGrid嵌入Combobox
**布局管理**: 考虑到StringGrid可能的滚动,我们需要在StringGrid的OnScroll事件中调整ComboBox的位置,以保持其与当前可视单元格的对应关系。
stringgrid拖动换行
为了提高用户体验,还可以添加滚动条、排序和过滤功能。Delphi的StringGrid虽然强大,但其功能往往需要通过编写额外的代码来扩展。
Delphi StringGrid组件
- **设置方式**: - **设计时设置**:在对象监视器中设定`RowCount`属性。 - **运行时设置**:通过赋值语句改变`RowCount`的值。


