我的FORM上是这样的,有一个scrollbox,一个button,两个label.
点击button后,动态在scrollbox上生成一组控件
由于美观的原因,我隐藏了scrollbox的滚动条,用两个label分别上下控制ScrollBox的滚动
现在问题出来了
用ScrollBox1.ScrollBy(0,n) 的确可以控制上下滚动
但是可以无限制的滚下去,ScrollBox显示为空白了,还是可以滚,
请问如何判断ScrollBox里已经显示完了label变灰
因为里面的ScrollBox里面的东西是动态生成的,而且不一定有多少个,不能直接用数字表达,也不能用最后一个控件的名字来判断,我该怎么办,比较急

解决方案 »

  1.   

    嗯,收到,就是少了点:)你可以设定一个变量,比如i 假设一行3个,每行高度是100像素,现在有14个动态创建的控件i:=0; // 表示到顶
    i:=1; // 表示在第二行
    ...
    i:=14 div 3; // 表示到底了, 具体怎么得到这个值,你应该会的,我就不详细写了
    if i>0 then 允许向上;
    if i<(14 div 3) then 允许向下;
      

  2.   

    有点没看明白
    生成一组控件,为什么要放到ScrollBox里?
    既然放到ScrollBox里,为什么要‘为了美观而隐藏scrollbox的滚动条’?
      

  3.   

    试试循环ScrollBox里的每个控件,计算出AControl.Top + AControl.Height,则可以得到最大可以滚动的象素,再用一个变量记录当前已经滚动多少象素,即可控制label的enable
      

  4.   

    使用一个stringlist记录生成的所有控件,然后根据数量控制。