请问如何改变一个程序的Mainform(readonly)??????(100分)

  • 主题发起人 主题发起人 DiDi
  • 开始时间 开始时间
D

DiDi

Unregistered / Unconfirmed
GUEST, unregistred user!
曾经在一个英文delphi讨论组上看过
标题是alter Mainform,还给了一段例程,当时没注意.
现在要用到了,立马头大.
请各位大虾指点!
 
是程序运行时动态改变还是在设计中改变?
 
不好意思,来取分数了,老兄的原理好象差不多
本人对d4尚属初级,老兄用法甚妙
有没有搞错,怎么换了名头了,难道是分不够了,找得好辛苦
 
什么乱七八糟的,不懂。
在 PROJECT--OPTION 里不是有吗?实际上,只要在 PROJECT 的 SOURCE 中
把建立 FORM 的顺序改了就可以。
 
CJ have answer the question.
yes, you can change the order of creating form,
which you want ,which you put in first order.
 
我想是指运行是改变吧,否则要程序干吗?不过为什么要该mainform呢?
 
当然是运行中动态改变Mainform了.
我的天,白讨论了老半天...是我没说清,对不起大家了.
比如Outlook,关闭主窗口时,新邮件窗口依然存在
我想他是把主窗口传给了邮件窗口.而关闭了原来的主窗口.
以前看过的,可惜忘了.....
看有没有高手记得.

 
我不是说了吗,在PROJECT的代码中改变顺序麻。
或者
直接用一个主FORM,隐藏之,根据需要 SHOW 一个不得了,那那么麻烦。
 
我开始也用的是隐藏的方法,可是隐藏了主窗体后任务栏上还是有button,
我想把他一并去掉,只剩邮件窗口
 
要藏起来,这样吧:
ShowWindow(Application.Handle, SW_Hide);
 
不知你注意到没有,OUTLOOK新开一个邮件后任务栏上是有“outlook”及“新邮件”两个任务。
这样的话,实际上,它们是两个进程。关闭outlook并不影响新邮件。
 
是用两个进程实现的,
在任务列表里可以看到两个任务
多个进程都由同一个程序启动,
可能是通过运行参数来指定的。
 
大家的方法都很好.
但如果就转换mainform这一点来讨论的话,该怎样作呢?
 
我不是说了吗?创建顺序而已呀
 
不对,运行时改MainForm会把整个
消息处理体系搞乱的,还是用我的
方法吧。
 
没有啊,我试过好几次,任何时候用application.createform就可以将mainform易
主了,没有出过问题
 
runtime可以改变mainform?有这样的事吗?
 
以下摘自Inprise Delphi4 FAQ
Question:
Is it possible to change the main form of an application
dynamically at runtime?
Answer:
It is possible to change the applications main form dynamically at
runtime, but only during the applications start up. Todo
this, you
will need to choose "View->Project Source" from the IDE's main menu,
and edit the applications initialization code, changing the forms
creation order in response to some condition. Note: You will need
re-edit this code if you add additional forms to the project, as the
IDE's code wizard will not be expecting the changes that you have made
to the main project file, and you may find that the creation code for
the additional forms you have added may have been inserted in an
unexpected position within the code.
begin

Application.Initialize;
if SomeCondition
then
begin

Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
end
else
begin
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm1, Form1);
end;
Application.Run;
end.

看来,在application启动已后,是没有办法改变mianform的。
outlook和‘新邮件’应是两个进程,且‘新邮件’可以单独启动
不需要outlook主窗口。平时点击主页上的‘mailto:...’就是这样。
 
为保持版面清洁,此问题进入临界区,若在24小时内仍未有后续回答,将强制结束。
预定分数分配如下:
walone- 40 权威意见
amo- 30
李颖- 30 以上二者的意见是一致的,而且我认为这是解决此问题的最好方法.

若任何人对此处理或分配方案有任何意见,请在24小时内在本题下提出。
或者在<a href="DispQ.asp?LID=126377">[非技术问题版] 强制结束问题 及 分数分配申诉</a>.
//______
//君子之财,取之有道。大家来抢啊。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
916
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部