这段代码有问题吗?(100分)

  • 主题发起人 哈利波特
  • 开始时间

哈利波特

Unregistered / Unconfirmed
GUEST, unregistred user!
我应用的主窗口用做了登陆窗口,然后用一个普通窗口做为主窗口,但在最小化时出现了
问题,它不最小化到任务栏,而跑到桌面的左下角去了,所以为了解决这个问题我用了下
面的代码:
procedure WM_SysCommand(var message:Tmessage);message WM_SYSCOMMAND;
//声明
procedure Tfrm_main.WM_SysCommand(var message: Tmessage);
begin
if message.WParam=SC_MINIMIZE then
Application.Minimize
else
inherited;
end;
这是我从以前的贴子中找到的,不知道有没有什么问题?请大侠们给看看
如果有,会不会出现EAccessViolation,我的程序就出现,不知道是否和这段程序有关
详见http://www.delphibbs.com/delphibbs/dispq.asp?lid=1542496
 
主窗口就是主窗口,不要把主窗口当作登录窗口,
不合情理,实现起来,并达到效果,也很难
 
最小华不如释放掉Application.free
 
to:LiChaoHui
不用主窗口来做登陆窗口,用一般的我不会啊,呵呵,见笑了
我会用一般窗口来做启动画面,但登陆窗口就不行,也可以做,我以前做过一个,但是应用
的进程不能释放,一直没有解决,所以就改用主窗口来做了
to:brown0432
不如释放..是什么意思?不懂
 
登录窗体放在主窗体的oncreate事件中或者放在Application.Initialize之后.与启动窗体是一样的道理,有什么难题吗?
 
吃饭了,先给你段代码看看,希望你能理解
Application.Initialize;
if not untInit.Login then
//登录窗体
Application.Terminate
else
begin
frmFlash := TfrmFlash.Create(Application);
frmFlash.show;
frmFlash.update;
//====启动闪现窗体
Application.CreateForm(TDMBase, DMBase);
....
 
一_一 這段代碼只是最小化窗口而已, 不可能在系統任務欄上去.
 
用tomol的方法肯定可以,登录窗体只能动态创建才行
 
问题80%就出现在上面的代码上了,因为我把那段给//了,这几天一直没有出现异常
to:tomol
你的代码没看懂,能详细点吗?
我通常的做法就是:
Application.Initialize;
frmdl:=Tfrmdl.create(application);
frmdl.show;
while not frmdl.flag do
//flag为boolean,判断是否输入了正确的password
application.processmessages;
//开发人员指南中的启动画面就是这样做的
frmdl.hide;
frmdl.free;
.....
但是这样做有个问题,如果输入的密码不正确或直接关闭了frmdl那么程序的进程不能被
释放,即使在frmdl的onclose事件中加入application.terminate也不行
 
一个程序默认主窗体为主线程
一个程序只有一个主线程!只有主窗体才能最小化到任务栏,所以就不要…………
 
哪位兄弟给解释一下tomol代码的意思,给出一个完整的代码,好吗?
 
搜吧,讨论了很多次了
 
不太明白,但你这段可以改改
Application.Initialize;
frmdl:=Tfrmdl.create(application);
//----这里用模态显示,这样窗口关闭时有返回值的,
if (frmdl.showModal <> mrok) and not frmdl.flag then

application.Term.....;
//后边什么忘了:P
frmdl.free;
frmdl := nil;
 
Application.Initialize;
frmWelCome:=TFrmWelCome.Create(Application);
frmWelCome.show;
frmWelCome.Update;
frmLogin:=TFrmLogin.Create(Application);
frmLogin.ShowModal;
if frmLogin.ModalResult=1 then
//输入了正确的密码
begin
frmWelCome.Refresh;
Application.CreateForm(TfrmMain, frmMain);
Application.CreateForm(TfrmGongHuo, frmGongHuo);
Application.CreateForm(TfrmCustom, frmCustom);
frmWelCome.Hide;
frmWelCome.Free;
frmLogin.Free;
Application.Run;
end
else
begin
frmWelCome.Free;
frmLogin.Free;
Application.Terminate;
end;
 
接受答案了,呵呵
多谢大家帮忙
 
顶部