delphi – 当水平滚动条移动时,实时更新StringGrid?
发布时间:2020-12-15 09:27:12 所属栏目:大数据 来源:网络整理
导读:在Delphi 2010中,我需要显示一个网格,该网格具有一个大约15列x5行的水平滚动条. 我选择使用StringGrid. 但是,当鼠标按钮向下拖动水平滚动条时,我希望网格实时滚动. 显示的StringGrid组件不会实时滚动.它等待直到释放鼠标按钮才更新列并在必要时滚动. 此外,水
在Delphi 2010中,我需要显示一个网格,该网格具有一个大约15列x5行的水平滚动条.
我选择使用StringGrid. 但是,当鼠标按钮向下拖动水平滚动条时,我希望网格实时滚动. 显示的StringGrid组件不会实时滚动.它等待直到释放鼠标按钮才更新列并在必要时滚动. 此外,水平滚动条按钮(就是所谓的)与列数不成比例.并且当在底行上的向下箭头移动到右下一列的顶部时… 这些似乎是常见的需求,所以我很惊讶不在TStringGrid中找到它们. 围绕这两个问题的任何建议?我可以使用DbGrid或其他标准组件,但我倾向于不使用商业网格,如果我可以避免它.而且我不会使用共享软件或免费软件…… TIA 解决方法
对于第一个问题,您可以在设计时或运行时在StringGrid的
Options 中设置goThumbTracking:
StringGrid1.Options := StringGrid1.Options + [goThumbTracking]; 对于第三个问题,您可以使用控件的键盘事件处理程序提供所需的功能.一个例子; procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var StringGrid: TStringGrid; begin StringGrid := Sender as TStringGrid; case Key of VK_DOWN: if StringGrid.Row = StringGrid.RowCount - 1 then begin Key := 0; StringGrid.Row := StringGrid.FixedRows; if StringGrid.Col = StringGrid.ColCount - 1 then StringGrid.Col := StringGrid.FixedCols else StringGrid.Col := StringGrid.Col + 1; end; VK_UP: //...; VK_RIGHT: //; VK_LEFT: //; end; end; 对于第二个问题,滚动代码似乎埋藏在TCustomGrid的私有方法中.我不知道如何实现这一目标.. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |