首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

主窗体最小化到任务栏有关问题

2012-08-07 
主窗体最小化到任务栏问题现在是有主窗体Fmain,登录窗体Fuser数据连接窗体DataModule1,在工程选项的,主窗

主窗体最小化到任务栏问题
现在是有主窗体Fmain,登录窗体Fuser     数据连接窗体DataModule1,在工程选项的,主窗体上我已经选择了Fmain   ,但最小化时还不是到任务栏,如果把登录窗体去了就可以,代码如下:
//工程单元:
begin
    Application.Initialize;
    Application.CreateForm(TFmain,   Fmain);
    Application.Run;
end.

//主窗体单元:
procedure   TFmain.FormCreate(Sender:   TObject);
begin
    DataModule1:=TDataModule1.Create(Application);
    Fuser:=TFuser.Create(Application);
    Fuser.ShowModal;
end;

//登录单元
if   ADOQuery1[ '密码 ']=Edit2.Text   then
              begin
                  usernum:=ADOQuery1.fieldbyname( '权限 ').asstring;
                    if   usernum= '普通成员 '   then
                          i:=0
                    else
                    if   usernum= '管理员 '   then
                          i:=1
                    else
                    if   usernum= '系统管理员 '   then
                          i:=2;
                  qxid:=i;
                  myuser:=Edit1.Text;
                  Fuser.Hide;
                  Fmain.Show;
              end
              else
              begin
                  MessageDlg( '密码错误 ',mtError,[mbOK],0);
                  Edit2.Text:= ' ';
              end


以上都是连到调用其它单元的部分代码,其他无关代码没写出来,麻烦各位给看看要如何调用才正确

[解决办法]
Fuser.Hide; --->Fuser.Free; 
Fmain.Show;
[解决办法]
//主窗体单元:
procedure TFmain.FormCreate(Sender: TObject);
begin
DataModule1:=TDataModule1.Create(Application);
Fuser:=TFuser.Create(Application);
if Fuser.ShowModal=mrok then
Fuser.free;
end;
[解决办法]
http://download.csdn.net/detail/case5166/4421022简单写了个,希望能满足你的要求。
[解决办法]
Fuser:=TFuser.Create(Application); 
Fuser.ShowModal; 
放到formshow里面处理.如果放到FormCreate,你的MainForm还是你的登陆窗口。
Instance := TComponent(InstanceClass.NewInstance);
TComponent(Reference) := Instance;
try
Instance.Create(Self);
except
TComponent(Reference) := nil;
raise;
end;
if (FMainForm = nil) and (Instance is TForm) then
begin
TForm(Instance).HandleNeeded;
FMainForm := TForm(Instance);
end;
------解决方案--------------------


Application.CreateForm(TFmain, Fmain); 
说明 Fmain是主窗体. 也就是程序启动时创建的. 

Fuser:=TFuser.Create(Application); 
改成 Fuser:= TFuser.Create(nil);
 Fuser.ShowModal;
 Fuser.Free;

估后在 Fuser窗体的 FormClose事件里写
Action:= caFree;
Fuser:= nil;

这样就OK了... 资源完美释放. 如果在你程序运行过程中还需要重新登录之类的.. 同样的代码.依然适合.

热点排行