var frmComponent:TComponent; begin for ..... begin ....... end; frmComponent.Free; end 是这样吗?可组件不能被销毁,运行时有错误提示呀! [waring] unit9.pas(555):variable'frmComponent'might not have been initialized
好象你没有创建对象吧 var frmComponent:TComponent; begin frmComponent:=TComponent.create(可能有参数);//可能你少了这一行 for ..... begin ....... end; frmComponent.Free; end
为何Label可以正常的显示出来。Edit控件却不可以,运行时程序会中止。这是什么原因? (窗体上月30个Edit和Lable控件,均为隐藏。根据表中的记录内容从一开始显示Lable和Edit,输入数据后把Edit中的内容保存到表中。)procedure TForm9.FormShow(Sender: TObject); var ADOQadd:TADOQuery; ADOgwgz:TADOQuery; frmComponent:TComponent; frmComponent_Edit:TComponent; i:integer; begin ADOQadd:=TADOQuery.Create(self); ADOgwgz:=TADOQuery.Create(self); frmComponent:=TComponent.Create(self); frmComponent_Edit:=TComponent.Create(self); ADOgwgz.Connection:=MainForm.ADOConnection1; ADOQadd.Connection:=MainForm.ADOConnection1; ADOQadd.Active:=False; ADOQadd.SQL.Clear; ADOQadd.SQL.Add('select * from '+TableName_rec+';'); ADOQadd.Prepared; ADOQadd.Active:=True; ADOQadd.Open; ADOQadd.First; E_Count:=ADOQadd.RecordCount -1; for i:=0 to E_Count do begin frmComponent_Edit:= Components[i]; frmComponent:= Components[i]; if frmComponent_Edit is TEdit then begin (frmComponent_Edit as TEdit).Visible:=True; (frmComponent_Edit as TEdit).Hint:=Trim(ADOQadd.FieldValues['account_colum'])+':'; IF Trim(ADOQadd.FieldValues['account_colum'])='gwgz' Then Begin With ADOgwgz Do Begin SQL.Clear; SQL.Add('Select post_level.level_money From post_level,worker'); SQL.Add(' Where worker.work_id="'+Temp_id+'" and post_level.post_class=worker.work_post'); SQL.Add(' And post_level.level_class=worker.work_level;'); Prepared; Open; End; IF ADOgwgz.RecordCount > 0 Then (frmComponent_Edit as TEdit).Text:=ADOgwgz.FieldValues['level_money'] Else (frmComponent_Edit as TEdit).Text:='0.00'; ADOgwgz.Close; End Else (frmComponent_Edit as TEdit).Text:='0.00'; End; if frmComponent is TLabel then begin (frmComponent as TLabel).Visible:=True; (frmComponent as TLabel).Caption:=Trim(ADOQadd.FieldValues['account_hz'])+':'; end; ADOQadd.Next; End; frmComponent.Free; frmComponent_Edit.Free; end;
Destory也不行呀!
frmComponent:TComponent;
begin
for .....
begin
.......
end;
frmComponent.Free;
end
是这样吗?可组件不能被销毁,运行时有错误提示呀!
[waring] unit9.pas(555):variable'frmComponent'might not have been initialized
var
frmComponent:TComponent;
begin
frmComponent:=TComponent.create(可能有参数);//可能你少了这一行
for .....
begin
.......
end;
frmComponent.Free;
end
(窗体上月30个Edit和Lable控件,均为隐藏。根据表中的记录内容从一开始显示Lable和Edit,输入数据后把Edit中的内容保存到表中。)procedure TForm9.FormShow(Sender: TObject);
var
ADOQadd:TADOQuery;
ADOgwgz:TADOQuery;
frmComponent:TComponent;
frmComponent_Edit:TComponent;
i:integer;
begin
ADOQadd:=TADOQuery.Create(self);
ADOgwgz:=TADOQuery.Create(self);
frmComponent:=TComponent.Create(self);
frmComponent_Edit:=TComponent.Create(self);
ADOgwgz.Connection:=MainForm.ADOConnection1;
ADOQadd.Connection:=MainForm.ADOConnection1;
ADOQadd.Active:=False;
ADOQadd.SQL.Clear;
ADOQadd.SQL.Add('select * from '+TableName_rec+';');
ADOQadd.Prepared;
ADOQadd.Active:=True;
ADOQadd.Open;
ADOQadd.First;
E_Count:=ADOQadd.RecordCount -1;
for i:=0 to E_Count do
begin
frmComponent_Edit:= Components[i];
frmComponent:= Components[i];
if frmComponent_Edit is TEdit then
begin
(frmComponent_Edit as TEdit).Visible:=True;
(frmComponent_Edit as TEdit).Hint:=Trim(ADOQadd.FieldValues['account_colum'])+':';
IF Trim(ADOQadd.FieldValues['account_colum'])='gwgz' Then
Begin
With ADOgwgz Do
Begin
SQL.Clear;
SQL.Add('Select post_level.level_money From post_level,worker');
SQL.Add(' Where worker.work_id="'+Temp_id+'" and post_level.post_class=worker.work_post');
SQL.Add(' And post_level.level_class=worker.work_level;');
Prepared;
Open;
End;
IF ADOgwgz.RecordCount > 0 Then
(frmComponent_Edit as TEdit).Text:=ADOgwgz.FieldValues['level_money']
Else
(frmComponent_Edit as TEdit).Text:='0.00';
ADOgwgz.Close;
End
Else
(frmComponent_Edit as TEdit).Text:='0.00';
End;
if frmComponent is TLabel then
begin
(frmComponent as TLabel).Visible:=True;
(frmComponent as TLabel).Caption:=Trim(ADOQadd.FieldValues['account_hz'])+':';
end;
ADOQadd.Next;
End;
frmComponent.Free;
frmComponent_Edit.Free;
end;