100分,求一关于systenmenu的控件 (100分)

  • 主题发起人 主题发起人 酷尔贝塔
  • 开始时间 开始时间

酷尔贝塔

Unregistered / Unconfirmed
GUEST, unregistred user!
[blue]如题所述。
要求:能把 用delphi开发的软件的系统菜单,做的跟用VB,VC的一样的就行。
也就是解决DELPHI开发的程序在任务栏上的系统菜单太短的问题。 做的就像LeechGet的系统
菜单搞的一样就行了。
dream40@etang.com [/blue]
 
收一下试试这个好使不
说 明:提供 TSystemMenuItem 、TSystemMenu及TLinkPopUpMenu 三个控件,可以很容易
加入自己的 Menu Item 到 System Menu 中
 
不用控件,改两个文件即可:
1 == 工程文件:Project1.dpr
//加一条语句
program Project1;
uses
Forms, Windows,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

2 == 主窗口所在单元Unit1.pas
//加一个函数CreateParams
unit Unit1;

interface

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

type
TForm1 = class(TForm)
private
{ Private declarations }
protected
procedure CreateParams(var Params: TCreateParams); override;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.WndParent := 0;
end;

end.
 
把ODBC从有边移到左边
 
谢谢desertsmoke的控件,不过这个我早就有了。
并请独帅兄,发一个完整的例子给我吧。上面的编译通不过,谢谢~
(并申明一下,我要的是,让FORM的两个系统菜单能够统一)
 
独帅的例子可以正常执行,就是没有想要的效果。
我的系统是win2000
 
我也有一个空间可以完成[:)]
 
这个功能我早就实现了
 
看你的qq,发了
 
TO:独帅及各位大虾,搞定了.
是家里的那只笨机有问题....[:D]
 
多人接受答案了。
 
T0:独帅,
{不用控件,改两个文件即可:
1 == 工程文件:Project1.dpr
//加一条语句
program Project1;
uses
Forms, Windows,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

2 == 主窗口所在单元Unit1.pas
//加一个函数CreateParams
unit Unit1;

interface

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

type
TForm1 = class(TForm)
private
{ Private declarations }
protected
procedure CreateParams(var Params: TCreateParams); override;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.WndParent := 0;
end;

end.}
---------------------
以上这段代码有个BUG.就是最小化不了啊.???你是否已发现.能否帮忙解决一下....
其它大虾如果知道也可以通知我.谢谢..([red]到时将开再开贴发分[/red])
dream40@etang.com
 
//以上这段代码有个BUG.就是最小化不了啊.???
不好意思,果然如此,呵呵,应该能解决的,再看看
 
//这样应该可以,我试过了,在主窗口中再重载一个函数WMSysCommand,如下面的例子:
//Project1.dpr还是照原来的方法改
unit Unit1;

interface

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

type
TForm1 = class(TForm)
private
{ Private declarations }
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.WndParent := 0;
end;

procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
begin
if Message.CmdType = SC_MINIMIZE then ShowWindow(Handle, SW_MINIMIZE)
else inherited;
end;

end.
 
后退
顶部