Hallo,
ich habe es mal versucht. Leider funktioniert es nicht so ganz wie ich es will. Wenn ich die Procedure aufrufe und eine 1 übergebe, dann funktioniert ja auch noch alles. Aber wenn ich eine 2 übergebe, dann funktioniert auch alles, außer der beschriftung. Die Breite und Höhe wird richtig berechnet. Wo liegt mein Fehler???
Delphi-Quellcode:
procedure TForm1.ShowPictures(a : Integer);
var p : Array of TPanel;
r : Integer;
j : Integer;
begin
SetLength(p, a);
r:=10;
for j:=1 to a do
begin
p[j - 1]:=TPanel.Create(nil);
p[j - 1].Caption:='Panel ' + IntToStr(j);
p[j - 1].Width:=Round((ScrollBox1.Width - 3 * r) / 2);
p[j - 1].Height:=Round((ScrollBox1.Height - 3 * r) / 2);
if j mod a = 0 then
begin
p[j - 1].Left:=r;
p[j - 1].Top:=r;
end
else
begin
p[j - 1].Left:=Round(2 * r + (ScrollBox1.Width - 3 * r) / 2);
p[j - 1].Top:=r;
end;
p[j - 1].Parent:=ScrollBox1;
end;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
ShowPictures(2);
end;