2010-07-30 2 views
0

스크롤 상자에 7 개의 동적 버튼을 만들었습니다. 각 행에는 2 개의 버튼 (버튼 수는 변경 될 수 있음) 만 있으면되지만 아래 코드의 결과는 2 개의 버튼이있는 첫 번째 행을 보여주고 나머지는 2 번째 행에 표시합니다. 어떻게 2 개의 버튼 1 행에 고정해야합니까?1 행에 여러 개의 동적 버튼을 고정하는 방법은 무엇입니까?

procedure TForm1.CreateDynamicBtn2; 
var 
    abtn: TBitBtn; 
    i, j, iNum, iCount : integer; 
begin 
    if ScrollBox2.ControlCount > 0 then begin 
     for j := ScrollBox2.ControlCount - 1 downto 0 do begin 
      with ScrollBox2.Controls[j] AS TBitBtn do begin 
      Free; 
      end; 
     end; 
    end; 
    iCount := 0; 
    for i := 0 to 6 do begin 
    iNum := i + 1; 
    abtn := TBitBtn.Create(self); 
    abtn.Parent := ScrollBox2; 
    abtn.Visible := True; 
    abtn.Caption := 'dynamic' + IntToStr(i); 

    if iNum*abtn.Width > (iCount+2)*abtn.Width then begin 
     iCount := iCount + 1; 
     abtn.Left := (iCount * abtn.Width) - abtn.Width; 
     abtn.Top := abtn.Height; 
    end else begin 
     abtn.Left := i * abtn.Width; 
     abtn.Top := 0; 
    end; 
    end; 
end; 

답변

3

너무 복잡하기 때문에?

abtn.Left := (i mod 2) * abtn.Width; 
abtn.Top := Trunc((i div 2)) * abtn.Height; 

트릭을 멋지게해야합니다.

+0

고맙습니다 =) – user367856

+0

+1 (x, y) 쌍이 복잡하지 않아도된다는 것을 기억하십시오! –

관련 문제