var
   i, ImageW, ImageH, OffSet, CurrentX, CurrentY : integer;
begin
   ImageW := 440;    ImageH := 175;     OffSet := 5;
   CurrentX := 0;
   CurrentY := 0;
   for i := 0 to ScrollBox1.ComponentCount - 1 do
     begin
        if ScrollBox1.Components[i] is TImage then
             with TImage(ScrollBox1.Components[i]) do
               begin
                  Parent := ScrollBox1;
                  Width := ImageW;
                  Height := ImageH;
                  Left := CurrentX + OffSet;
                  Top := CurrentY + OffSet;
                  proportional:=true;
                  if ScrollBox1.Width<(CurrentX + 2 * OffSet + ImageW ) then
                  begin
                        CurrentX := 0;
                        CurrentY := CurrentY + 2 * OffSet + ImageH;
                  end  else
                        CurrentX := CurrentX + 2 * OffSet + ImageW;
                  end;
              end;代码是如上所写,但如何清空呢?每次执行完后能够把scrollbox回复到初始状态

解决方案 »

  1.   

    for i := 0 to ScrollBox1.ComponentCount - 1 do
         begin
            if ScrollBox1.Components[i] is TImage then
                 FreeAndNIl(TImage(ScrollBox1.Components[i]));
         end;
      

  2.   

    我是这样照抄的,但还是运行不了,出错提示为:[Error] caseembryo1.pas(1375): Constant object cannot be passed as var parameter
    请问什么原因?procedure TForm_caseembryo1.Button1Click(Sender: TObject);
    var
         i:integer;
    begin
         for i:=0 to ScrollBox1.ComponentCount - 1 do
         begin
            if ScrollBox1.Components[i] is TImage then
                 FreeAndNil(TImage(ScrollBox1.Components[i]));
         end;end;
      

  3.   

    我想你直接把scrollbox中的控件分别释放不就行了!
    有问题请发信息到我的E-mail:[email protected]
      

  4.   

    for i := 0 to ScrollBox1.ComponentCount - 1 do
         begin
            if ScrollBox1.Components[i] is TImage then
                 FreeAndNIl(TImage(ScrollBox1.Components[i]));
         end;
    改为:
    for i:=scroolbox1.ComponentCount-1 downto 0 do
    begin
      if ScrollBox1.Components[i] is TImage then
                 FreeAndNIl(TImage(ScrollBox1.Components[i]));
    end即可.