全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1056
推到 Plurk!
推到 Facebook!

TStringGrid: 如何阻止Horizontal的自动滚动(Scroll)

尚未結案
yyu10
中階會員


發表:9
回覆:99
積分:96
註冊:2005-02-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-13 09:07:48 IP:203.14.xxx.xxx 未訂閱
假设TStringGrid的宽度100, 里面有两栏, 宽度分别是40, 70. 当程式运行时, 栏2只有一部分show出来. 这时将将游标移入栏2, Grid会自动向左滚动. 请问如何阻止这种滚动? 我已试过将ScrollBars设置成ssNone, 只是不秀bar, 但滚动还是发生. _________________________ Programming is a passion
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-13 12:53:31 IP:218.170.xxx.xxx 未訂閱
70 40=110 > 100 把stringgrid設寬一點如何呢?
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-13 14:52:41 IP:61.222.xxx.xxx 未訂閱
有點困難。主要 TStringGrid 並沒有可以介入的機會。 像是 TopLeftChanged 解決方法:(建議) 1. 用 RowSelect 。 2. 攔截 SelectCell 3. 改寫 Grids ~~~~~~~~~~~ 難得聰明,常常糊塗。 ~~~~~~~~~~~
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-14 10:33:41 IP:219.86.xxx.xxx 未訂閱
解決了!但我發覺越老腦袋越不靈光。
type
  TStringGrid = Class(Grids.TStringGrid)
  protected
    procedure TopLeftChanged; override;
  end;
  TForm1 = class(TForm)
    EvGrid1: TStringGrid;
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.DFM}    Procedure TStringGrid.TopLeftChanged;
begin
  inherited;
  {當觸發TopLeftChanged 就意味 LeftCol 更改,因此在改回來}
  LeftCol := FixedCols;
end;
~~~~~~~~~~~ 難得聰明,常常糊塗。 ~~~~~~~~~~~
yyu10
中階會員


發表:9
回覆:99
積分:96
註冊:2005-02-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-05-14 16:25:46 IP:220.245.xxx.xxx 未訂閱
感谢wameng兄指点迷津. 我发现用RowSelect也能阻止滚动, 但wameng兄的方法更精巧, 谢谢. _________________________ Programming is a passion
系統時間:2024-07-01 19:28:28
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!