S stoopyme Unregistered / Unconfirmed GUEST, unregistred user! 2008-12-22 #1 在StringGrid裡可以用繼承grids的fix屬性實現固定列,不過現在想知道如何實現一個凍結列的效果。誰可以提供點滾動條的資料,也就是為什麼固定列可以不卷動的原理?
D delhpi Unregistered / Unconfirmed GUEST, unregistred user! 2008-12-22 #3 看到有人自己写的GRID,好像都是从TLIST继承下来的吧。 不过可以变通一下。 GRID的列是可以移动的。如果你要冻结3列,可以用代码把这个列移动到最左边,然后调整FIXCOLS的设置,就是增加固定列的数量,就可以达到冻结列的效果了。刚想到的,自己还没有测试。
看到有人自己写的GRID,好像都是从TLIST继承下来的吧。 不过可以变通一下。 GRID的列是可以移动的。如果你要冻结3列,可以用代码把这个列移动到最左边,然后调整FIXCOLS的设置,就是增加固定列的数量,就可以达到冻结列的效果了。刚想到的,自己还没有测试。
C CoolSlob Unregistered / Unconfirmed GUEST, unregistred user! 2008-12-22 #4 如果不介意使用第3方控件的话, 建议使用AdvStringGrid,搜索TMS Pack AdvStringGrid 功能比自带的StringGrid强大得多。
S stoopyme Unregistered / Unconfirmed GUEST, unregistred user! 2008-12-22 #5 雖然第三方控件是可以實現的,不過主要是想研究下,找點思路。大家來談談。 我在procedure TCustomGrid.ScrollDataInfo裡修改了下 ScrollArea := Rect(Horz.FixedBoundary + Horz.FrozenBoundary , 0, Horz.GridExtent, Vert.GridExtent) 雖然可以實現指定區域的滾動,不過當出現列的寬度變化時,那些列的格線就亂了 注:Horz.FrozenBoundary 為凍結列的寬度
雖然第三方控件是可以實現的,不過主要是想研究下,找點思路。大家來談談。 我在procedure TCustomGrid.ScrollDataInfo裡修改了下 ScrollArea := Rect(Horz.FixedBoundary + Horz.FrozenBoundary , 0, Horz.GridExtent, Vert.GridExtent) 雖然可以實現指定區域的滾動,不過當出現列的寬度變化時,那些列的格線就亂了 注:Horz.FrozenBoundary 為凍結列的寬度