Z
zhangkan
Unregistered / Unconfirmed
GUEST, unregistred user!
各位大蝦﹐小弟在程序中建立了一個類﹐動態生成一維﹑兩維甚至多維的TEdit控件﹐
並將數據讀入其中﹐(因為在Delphi中沒有控件數組﹐所以我效法VB自己寫一個類生成控件
數組)但在測試中﹐生成一維數組絕沒有問題﹐但生成二維時﹐撤消該類時便出現錯誤﹐我
也不知是什麼問題﹐有時生成時也會出現問題﹐在此向各類大蝦求救。
我是在程序中給出生成多少個TEdit控件和几維﹐然后在類中再以給出的數值生成相應
的TEdit控件﹐這樣應該沒有問題。最想不通的是生成一維的不會出現問題﹐但讓它生成兩
維控件時便會出現問題﹐是否Delphi不支持還是別的什么原因﹖
部份代碼如下﹕若哪位大蝦要代碼﹐請告之Email﹐我最寄給你。kan@freetrend.com.vn
生成該類
constructor TShowTxt.Create(AForm: TForm);
begin
inherited Create;
Initiate;
end;
生成控件數組﹕
procedure TShowTxt.CreateTxT(Parent: TWinControl; ToTal: integer;
Name: array of string);
var i,j:integer;
begin
NumTxT:=ToTal;
Rows:=NumTxT div RowNum;
SetLength(txt,Levels,NumTxT);
SetLength(lbl,Rows);
for i:=0 to Levels-1 do
for j:=0 to NumTxT-1 do begin
txt[i,j]:=TEdit.Create(Parent);
txt[i,j].Visible:=False;
txt[i,j].Parent:=Parent;
txt[i,j].Width:=FWidth;
txt[i,j].Height:=FHeight;
txt[i,j].Font.Size:=FFontSize;
txt[i,j].Name:=Name+IntToStr(j+1);
txt[i,j].Color:=clRed;
txt[i,j].OnKeyDown:=TxTKeyDown;
txt[i,j].OnKeyPress:=TxTKeyPress;
txt[i,j].Ctl3D:=False;
txt[i,j].MaxLength:=MaxLen;
txt[i,j].Text:='';
end;
for i:=0 to Levels-1 do
for j:=0 to Rows-1 do
begin
lbl[i*Rows+j]:=TLabel.Create(Parent);
lbl[i*Rows+j].Parent:=Parent;
lbl[i*Rows+j].Caption:=FlblCaption;/*這是定義的一個一維屬性*/
end;
end;
撤消該類﹕
destructor TShowTxt.Destroy;
var i,j:integer;
begin
// inherited;
for i:=0 to Levels-1 do
for j:=0 to NumTxT-1 do
txt[i,j].Free;
for i:=0 to Levels-1 do
for j:=0 to Rows-1 do
lbl[i*Rows+j].Free;
inherited Destroy;
end;
設將Levels設為1﹐即1維﹐便不會出現問題﹐而將其設為2或更大﹐便出現問題。
哪位大蝦救我﹐謝啦﹗﹗﹗
並將數據讀入其中﹐(因為在Delphi中沒有控件數組﹐所以我效法VB自己寫一個類生成控件
數組)但在測試中﹐生成一維數組絕沒有問題﹐但生成二維時﹐撤消該類時便出現錯誤﹐我
也不知是什麼問題﹐有時生成時也會出現問題﹐在此向各類大蝦求救。
我是在程序中給出生成多少個TEdit控件和几維﹐然后在類中再以給出的數值生成相應
的TEdit控件﹐這樣應該沒有問題。最想不通的是生成一維的不會出現問題﹐但讓它生成兩
維控件時便會出現問題﹐是否Delphi不支持還是別的什么原因﹖
部份代碼如下﹕若哪位大蝦要代碼﹐請告之Email﹐我最寄給你。kan@freetrend.com.vn
生成該類
constructor TShowTxt.Create(AForm: TForm);
begin
inherited Create;
Initiate;
end;
生成控件數組﹕
procedure TShowTxt.CreateTxT(Parent: TWinControl; ToTal: integer;
Name: array of string);
var i,j:integer;
begin
NumTxT:=ToTal;
Rows:=NumTxT div RowNum;
SetLength(txt,Levels,NumTxT);
SetLength(lbl,Rows);
for i:=0 to Levels-1 do
for j:=0 to NumTxT-1 do begin
txt[i,j]:=TEdit.Create(Parent);
txt[i,j].Visible:=False;
txt[i,j].Parent:=Parent;
txt[i,j].Width:=FWidth;
txt[i,j].Height:=FHeight;
txt[i,j].Font.Size:=FFontSize;
txt[i,j].Name:=Name+IntToStr(j+1);
txt[i,j].Color:=clRed;
txt[i,j].OnKeyDown:=TxTKeyDown;
txt[i,j].OnKeyPress:=TxTKeyPress;
txt[i,j].Ctl3D:=False;
txt[i,j].MaxLength:=MaxLen;
txt[i,j].Text:='';
end;
for i:=0 to Levels-1 do
for j:=0 to Rows-1 do
begin
lbl[i*Rows+j]:=TLabel.Create(Parent);
lbl[i*Rows+j].Parent:=Parent;
lbl[i*Rows+j].Caption:=FlblCaption;/*這是定義的一個一維屬性*/
end;
end;
撤消該類﹕
destructor TShowTxt.Destroy;
var i,j:integer;
begin
// inherited;
for i:=0 to Levels-1 do
for j:=0 to NumTxT-1 do
txt[i,j].Free;
for i:=0 to Levels-1 do
for j:=0 to Rows-1 do
lbl[i*Rows+j].Free;
inherited Destroy;
end;
設將Levels設為1﹐即1維﹐便不會出現問題﹐而將其設為2或更大﹐便出現問題。
哪位大蝦救我﹐謝啦﹗﹗﹗