在stringgrid中,如果单元格宽度超出控件宽度就会出现横向滚动条,但是如果我把滑块拉到最右边,然后移动光标条查看上一行或下一行(属性值为行选择),滑块自动回到最左边,而不能保持原来的位置,不知是何原因???

解决方案 »

  1.   

    到,www.51delphi.com上下载一套TMS控件组,里面有个ADVSTRINGGRID是Stringgrid的改进版本,没有这种问题
      

  2.   

    你看看那个click触发的scroll事件应该可以用发送消息解决的。
    delphi主要是利用消息机制的
      

  3.   

    是因为你在option中选中了rowselect = true 了,如果=false 就没有这种情况,这就是鱼和xx不可兼得。
      

  4.   

    不错,我就是想行选择,并且还想保持滑块左右的位置,上下滑块移动时,左右的位置不变。不行吗?
    我也使用了TMS控件包中的ADVSTRINGGRID,但是还是不行,这是没办法的吗???
      

  5.   

    其实程序这样做是有理由得,当rowselect = true ,说明你对整行的内容感兴趣,所以当换行时,自动移动到第一列让你从头看起。你的想法正好反其道当然不行了,其实这也是为什么软件不能像硬件那样堆砌式的发展的原因了。
      

  6.   

    同意 zsr(老牛)  的意见,
    不过最好把“可能”两字去掉!
      

  7.   

    “先调整好光标的位置” 意思是:
    StringGrid.Row  , StringGrid.Col所指示StringGrid的
    当前行和列。键盘方向键的操作,是依据StringGrid.Row  , StringGrid.Col
    来进行移动的 。我非常肯定你的问题的根本就在StringGrid.Row  , StringGrid.Col这里。再琢磨一下吧!!!