2010-12-11 16 views
1

我想在此创建一个过程。如何创建具有两维或多维数组参数的程序?

procedure TForm1.Button1Click(Sender: TObject); 
var 
    a: Array[0..1, 0..2] of TControl; // need to be pass 
    tmp: Array[0..1] of TControl; 
    i, j, iCnt : Integer; 
begin 
//------------------------------------- 
    a[0][0] := Panel1; //sample data inside the main panel 
    a[0][1] := Panel2; 
    a[0][2] := Panel3; 
    a[1][0] := Panel4; 
    a[1][1] := Panel5; 
    a[1][2] := Panel6; 
//------------------------------------- 

    for i := low(a) to high(a) do 
    AutoSizeCtrlWidth(mainpanel, a[i], 20, 20); 
    for j := low(a[1]) to High(a[1]) do 
    begin 
    for i := low(a) to high(a) do 
    tmp[i] := a[i][j]; 
    AutoSizeCtrlHeight(mainpanel, tmp, 20,20); 
    end; 
// 
end; 

实施例:

procedure AutoSizeCtrlWidthHeight(AParentCtrl: TControl; arControls: Array of TControl; ASpacing, AMargin: Integer); 

如何创建具有两个参数或多维阵列的程序?

回答

3
type 
    TMyDataType = array of array of integer; 

procedure MyProcedure(const Data: TMyDataType); 
begin 
end; 
+0

我总是想要一个数组参数为const - 我相信你也知道这个 – 2010-12-11 16:40:36

+0

* dynamic * array? – 2010-12-11 23:23:18

+1

@ user205376:是的,这就是它所称的。 “数据”是一个整数的二维动态数组。 – 2010-12-11 23:28:31