gpt4 book ai didi

delphi - 当水平滚动条移动时 StringGrid 实时更新?

转载 作者:行者123 更新时间:2023-12-03 15:24:25 25 4
gpt4 key购买 nike

在 Delphi 2010 中,我需要显示一个网格,该网格具有大约 15 列 x 5 行的水平滚动条。

我选择使用 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的私有(private)方法中。我不知道如何实现这一目标..

关于delphi - 当水平滚动条移动时 StringGrid 实时更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4111553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com