procedure TFrm_main.ScrollBox_datainputResize(Sender: TObject);
var
   I_temp,I_control:integer;
begin
   (sender as Tscrollbox).VertScrollBar.Position :=0;
   I_temp:=((sender as Tscrollbox).Height -
      (sender as Tscrollbox).ControlCount*(sender as Tscrollbox).Controls[0].Height)
       div ((sender as Tscrollbox).ControlCount+1);
   if I_temp<5 then I_temp:=5;
   for I_control:=0 to (sender as Tscrollbox).controlcount-1 do
   begin
      with (sender as Tscrollbox).controls[I_control] do
      begin
         Left :=0;
         Width :=(sender as Tscrollbox).width;
         height:=(sender as Tscrollbox).Controls[0].Height;
         Top :=I_control*(sender as Tscrollbox).Controls[0].Height + (I_control+1)*I_temp;
      end;
   end;
end;
   初学,好多都看不懂啊,救命!!!

解决方案 »

  1.   

    就是把SENDER这个对象当成是Tscrollbox类的实例来看待~~
    这么说既不科学也不好理解,还是等高手来给你解释好了 ^Q^
      

  2.   

    (sender as Tscrollbox)就是把sender作为Tscrollbox类型来处理。
      

  3.   

    呵呵,说不明白!建议还是看一下windows编程基础内容。
      

  4.   

    :-> ///
    1 了解Sender这个冬冬
    2 了解as的用法。。
      

  5.   

    procedure TFrm_main.ScrollBox_datainputResize(Sender: TObject);这个事件响应过程在ScrollBox发生Resize的时候被调用(先不管是谁调用它的),参数里面传递过来的就是发生Resize事件的ScrollBox本身(你的例子里面就是ScrollBox_datainput),当然在这里它表现为TObject类,因为TScrollBox也是继承自TObject的,这里要不明白的话就参考些面向对象方面的书籍,看看多态。你在事件过程当中要调用这个ScrollBox本身的一些方法和属性时,就要把它强制转换为TScrollBox类型,这就时用as关键字的原因。在Delphi当中,这种事件响应过程里面传过来Sender: TObject是一种习惯,你应该很容易发现这种特点的。
      

  6.   

    (sender as Tscrollbox)   TSCROLLBOX 对象发出的,