怎样让创建的MDI子窗口能够显示在任务栏上 ( 积分: 30 )

  • 主题发起人 主题发起人 siaosa
  • 开始时间 开始时间
S

siaosa

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样让创建的MDI子窗口象主表单窗口一样能够显示在任务栏上.[red]注意是MDI子窗口[/red]
 
显示子窗体!?又什么意义呢?你只是想要把当前激活的子窗体窗口名称显示在任务栏上吧?要是那样的话,就将当前的焦点窗体的名字传递给主窗体就可以了。
 
使子窗体最小化就可以!
 
To:Johnny_du
就像普通应用程序一样,能够显示在任务栏一样,如果打开多个MDI窗口,任务栏就显示多个窗口,这样多个子窗口切换起来比较方便
 
在MDI里也可以切换啊?
 
To:杯中水
如果MDI窗口能够显示在任务栏上的话,切换起来更方便点
 
哦,明白你的用意了。不过你说的方法似乎不行...不过有一个类似于你说的方法的变通的解决方案。就是在你程序的MDI窗体的主窗体中自己定义一个类似于Windows任务栏的子窗体切换栏,这个应该不难实现的,而且可以实现你的用意。
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
Procedure CreateParams(Var Params: TCreateParams); Override;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}
uses unit2;

procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Show;
end;

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin

exStyle := exStyle or WS_EX_APPWINDOW;
WndParent := 0;
end;
end;

end.
----------------------------------------------
unit Unit2;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
TForm2 = class(TForm)
private
{ Private declarations }
Procedure CreateParams(Var Params: TCreateParams); Override;
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.DFM}

{ TForm2 }

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin

exStyle := exStyle or WS_EX_APPWINDOW;
WndParent := 0;
end;
end;

end.
-------------------------
program Project1;

uses
Windows,
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};

{$R *.RES}

begin
Application.Initialize;
SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
-------------------------------------
工程文件这样改,把工程的窗口隐藏!
 
To:angellover
试了您的方法,对MDI窗口无效
 
用Delphi编的程序最小化时没有动态效果,可以用以下方法实现。
一、New Application。
二、New Form,生成Form2。
三、New Unit,在implementation后面加上:
initialization
islibrary :=true;
四、Save All,为工程取好名字,Unit建议取名为“RunFirst.pas”。
五、打开工程文件,把“RunFirst in 'RunFirst.pas';”放到“Forms,”这一行前面去,如下:
program Project1;
uses
RunFirst in 'RunFirst.pas',
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};

{$R *.RES}

begin
Application.Initialize;
Application.ShowMainForm :=false;
islibrary :=true;
Application.CreateForm(TForm1, Form1);
Form2 :=TForm2.Create(Application) ;
Form2.Show ;
Form2.Update ;
Application.Run;
end.
六、在Form2的OnClose事件中写如下语句:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Application.Terminate
end;
即可。
 
对子窗体无效,HOHO!楼上的方法不知道可以不!
 
小CASE,有一次我就碰到了MDI窗口出现在了任务栏上
办法就是使用MDI DLL,具体到网上搜。
如果搜不到,可以来MAIL我
yufeng1979@21cn.com
 
帮你顶,接个分
 
To:狂风123
我有给你发邮件,有时间请告诉我应该怎么做才能实现这种功能.谢谢!
 
如果你想花最少的钱学习流行的计算机技术,本人低价提供
计算机专业高清晰 视 频 教 程,所有教程由业内名家讲解,物超所值,
特快专递全国三天内到货.
联系方式:手 机:1 3 5 76145612(手机联系佳) Q Q:108410943
E-mail:ncncldjjg@126.com
1、Oracle9iOCP(Oracle认证专家DBA)视频教程(23CD)
2、SQL语言、数据挖掘、SQLServer2000视频教程(6CD)
3、计算机网络原理视频教程(4CD)
4、计算机实用组网技术视频教程(3CD)
5、MCSE(微软认证系统工程师)认证视频教程(11CD)
6、windows2003即学即会视频教程(6CD)
7、J2EE Web程序开发定向班/Java就业班视频教程
(java基础jsp核心技术UML设计)(13CD)
8、J2EE基础高级案例分析视频教程(9CD)
9、马士兵J2SE入门与精通(含坦克大战、BBS实例)视频教程(6CD)
10、java语言深入详解视频教程(12CD)
11、java技术从入门到精通视频教程(21CD)
12、javascript全接触视频教程(13CD)
13、各类网站源程序(9CD)
14、unix原理视频教程(3CD)
15、Linux软件开发工程师(C语言)视频教程(4CD)
16、Linux配置、管理、优化实战工程师视频教程(8CD)
17、Linux内核编程视频教程(11CD)
18、C语言详解视频教程(2CD)
19、VC++6.0(MFC)开发技术术详解视频教程(6CD)
20、ASP.NET中文视频教程(3CD)
21、洪恩C#入门多媒体教程(1CD)
22、XML技术视频教程(2CD)
23、操作系统视频教程(3CD)
24、网络技术基础视频教程(2CD)
25、数据结构视频教程(5CD)
26、清华大学计算机专业多媒体教程(数据结构、汇编、编译原理等)(13CD)
27、大学数学[离散数学线性代数概率与数理统计微积分]视频教程(22CD)
28、LearnKey Asp.Net (老外用英语讲课)(13CD)
29、LearnKey Asp.Net Webservice(老外用英语讲课)(5CD)
30、AppDev Asp.Net2.0 UsingC# (老外用英语讲课)(1CD)
31、APPDev .Net Framework(老外用英语讲课)(2CD)
32、林清安pro/e2001(野火版)视频教程(18CD)
33、深圳大学3D设计视频教程(4CD)
34、3DMAX建模视频教程(老外用英语讲课)(6CD)
35、3DMAX纹理与贴图材质灯光视频教程(老外用英语讲课)(5CD)
36、3DMAX格式500个常用模型库(4CD)
37、lightscape基础入门视频教程(2CD)
38、聚光制造(lightscape3.2入门与精通视频教程)(4CD)
39、coreldraw12中文版入门与精通swf格式视频教程(2CD)
 
切换窗口方便?
MDI切换窗口快捷键是ctrl+tab
而任务栏窗口切换是alt+tab。
不是差不多吗?
 
任务栏窗口切换,从其它程序切换 只要用鼠标点一下任务栏上的窗口即可
MDI上的任务切换,从其它程序切换 需要用鼠标点任务栏MDI应用程序,再从MDI程序中选择所需要的窗口
 
自己搞一个panel,把它搞的像任务栏一样。所有创建的Mdichild窗体类用TStringList管理起来,动态在panel上生成speedbutton,对应管理即可
 
Acrobat Reader就有这个功能,它可以打开多少个文档就在任务栏显示多少个栏位,就像同时打开了多个acrobat reader的进程实例一样。不过不知道怎么实现的。
 
来自:地质灾害, 时间:2007-7-11 8:27:39, ID:3809233
Acrobat Reader就有这个功能,它可以打开多少个文档就在任务栏显示多少个栏位,就像同时打开了多个acrobat reader的进程实例一样。不过不知道怎么实现的。

你真是外星人,无孔不入呀。

强烈鄙视这种人
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
556
import
I
I
回复
0
查看
555
import
I
后退
顶部