我从登陆界面from1上登陆到主界面form2后,想重新登陆不能直接调用form1.因为不能循环调用,怎么才能在利用form1的登陆界面呢?从form1登陆的form2后,怎么释放form1占用的内存呢?我用 form2的oncreate中写
application.creatform(Tform1,form1);
form1.showmodal ;
form1.free ; 我是用ADOQuery1调用的access表,从里面查找到相应的字段就显示form2,重新登陆后在用form1,在进form2,就出现以下情况:
用form1.showmodal提示:
Access Violation at address 00000000
Read of address 00000000 用form1.show提示:
Access Violation at address 0000FBC3
Read of address 0000FBC3 是什么原因呢?
改成:
form1 := TForm1.Create(Application);
form1的create事件如下,从数据库表book中查找到登陆用户名添加到xm(是ComBoBox控件)中:
procedure Tlogin.FormCreate(Sender: TObject);begin
MyPath:=extractfilepath(Paramstr(0));
adoquery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+mypath+'data\book.mdb;Persist Security Info=False';
with ADOQuery1 do
begin
SQL.Clear;
SQL.Add('select 用户名 from manager ');
Open;
if RecordCount>0 then
While not Eof do
begin
XM.Items.Add(FieldValues['用户名']);
Next;
end;
Close;
xm.ItemIndex:=0;
end;end;
----------------------------------------------
application.terminate;
winexec('project1.exe',1);
project1.exe是应用程序的名称
可以考虑建立Form3作为mainForm来控制其他的Form