請教:StringGrid控件凍結列的實現(200分)

  • 主题发起人 stoopyme
  • 开始时间
S

stoopyme

Unregistered / Unconfirmed
GUEST, unregistred user!
在StringGrid裡可以用繼承grids的fix屬性實現固定列,不過現在想知道如何實現一個凍結列的效果。誰可以提供點滾動條的資料,也就是為什麼固定列可以不卷動的原理?
 
D

delhpi

Unregistered / Unconfirmed
GUEST, unregistred user!
我也关注,好像没有那么容易吧。
 
D

delhpi

Unregistered / Unconfirmed
GUEST, unregistred user!
看到有人自己写的GRID,好像都是从TLIST继承下来的吧。
不过可以变通一下。
GRID的列是可以移动的。如果你要冻结3列,可以用代码把这个列移动到最左边,然后调整FIXCOLS的设置,就是增加固定列的数量,就可以达到冻结列的效果了。刚想到的,自己还没有测试。
 
C

CoolSlob

Unregistered / Unconfirmed
GUEST, unregistred user!
如果不介意使用第3方控件的话,
建议使用AdvStringGrid,搜索TMS Pack AdvStringGrid
功能比自带的StringGrid强大得多。
 
S

stoopyme

Unregistered / Unconfirmed
GUEST, unregistred user!
雖然第三方控件是可以實現的,不過主要是想研究下,找點思路。大家來談談。
我在procedure TCustomGrid.ScrollDataInfo裡修改了下
ScrollArea := Rect(Horz.FixedBoundary + Horz.FrozenBoundary , 0, Horz.GridExtent, Vert.GridExtent)
雖然可以實現指定區域的滾動,不過當出現列的寬度變化時,那些列的格線就亂了
注:Horz.FrozenBoundary 為凍結列的寬度
 

李翔鹏

Unregistered / Unconfirmed
GUEST, unregistred user!
用CELL控件吧。
 
顶部