设为首页 加入收藏

TOP

取消StringGrid的自动滚动
2017-10-10 12:05:05 】 浏览:783
Tags:取消 StringGrid 自动 滚动

StringGrid的Options的goRowSelect为false时,在点击右侧未显示完全的Cell,StringGrid会自动向左滚动,怎样设定,取消StringGrid的自动滚动啊?Delphi7版的


 

终于自己找到解决办法了:
拷贝Grids.pas到自己项目的目录,并通过Project Manager加入到自己工程项目中
修改 
procedure TCustomGrid.MoveCurrent(ACol, ARow: Longint; MoveAnchor,
  Show: Boolean);
var
  OldSel: TGridRect;
  OldCurrent: TGridCoord;
begin
  if (ACol < 0) or (ARow < 0) or (ACol >= ColCount) or (ARow >= RowCount) then
    InvalidOp(SIndexOutOfRange);
  if SelectCell(ACol, ARow) then
  begin
    OldSel := Selection;
    OldCurrent := FCurrent;
    FCurrent.X := ACol;
    FCurrent.Y := ARow;
    if not (goAlwaysShowEditor in Options) then HideEditor;
    if MoveAnchor or not (goRangeSelect in Options) then
    begin
      FAnchor := FCurrent;
      if goRowSelect in Options then FAnchor.X := ColCount - 1;
    end;
    if goRowSelect in Options then FCurrent.X := FixedCols;
// if Show then ClampInView(FCurrent); {-20161029 将这一行注释掉}
    SelectionMoved(OldSel);
    with OldCurrent do InvalidateCell(X, Y);
    with FCurrent do InvalidateCell(ACol, ARow);
  end;
end;

 


 

进一步,控制一个StringGrid要自动滚动,另一个StringGrid不要自动滚动的办法:

mianform.pas
 
procedure TForm1.FormCreate(Sender: TObject);
  StringGrid1 .CanAutoMove:=False;
  StringGrid4 .CanAutoMove:=True;
 

grids.pas
  TCustomGrid = class(TCustomControl)
  public
     {+} CanAutoMove   : Boolean ;   //涂磊 +20161123
     
procedure TCustomGrid.MoveCurrent(ACol, ARow: Longint; MoveAnchor
 
    if ( Show) and (CanAutoMove) then ClampInView(FCurrent);   //{*}涂磊 20161123

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇[函數] Firemonkey Android 取得.. 下一篇[上架] iOS "app-specific p..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目