如何使!!!form有图标,但让!!!关闭按纽‘Χ’不出现 (20分)

  • 主题发起人 faguobali
  • 开始时间
F

faguobali

Unregistered / Unconfirmed
GUEST, unregistred user!
form的borderstyle:=bsDialog后,窗体上有关闭按纽‘Χ’,但无窗体图标了。
我想让
!!!窗体有图标,

!!!不让关闭按纽‘Χ’出现,
当然是用Close事件触发(使窗体关闭)。
请问各位高手如何实现。在此深表谢意了。:))
 
看看这个:
http://kuga.51.net/kuga/1.jpg
 
可以实现呀,不用设置成dbDialog,
 
张兄: 
  500年前是一家,不要绕圈好吗?
请告我一声,如何实现,设置成dbDialog
是不成的。多谢了:))
 
to gxcooo:
我看过了,你的窗体上也是没有icon的,只是将biSystemMenu:=false即可。
 
关闭按纽‘Χ’无法屏蔽,只能使它“变灰”(不能使用)
 
通過捕獲WM_NCHITTEST消息來實現:
在類型中添加過程
procedure WMNCHittest(var mag:Tmessage);[red]message WM_NCHITTEST;[/red]

procedure Tform1.WMNCHITTEST(var msg:tmessage);
begin
msg.result:=HTCLIENT;
END;


 
to ledo:
如何使‘X’变灰,不可用?我不知道。
to joshua_jia:
 procedure WMNCHittest(var mag:Tmessage);
 此过程加在程序中后,如何使用,请指教。
 
 
procedure TForm1.Button1Click(Sender: TObject);
var
SHandle: HMENU;
begin
SHandle := GetSystemMenu(Handle, false);
EnableMenuItem(SHandle,SC_CLOSE,MF_DISABLED+MF_GRAYED+MF_BYCOMMAND);
//通过设置系统菜单的“关闭”的Enabled属性,使关闭按钮不可用
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key=VK_F4)and ([ssAlt]=Shift) then
Key:=0; //屏蔽关闭窗口的快捷键 Alt+F4
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
KeyPreview:=true; //设置Form的 KeyPreview 属性为True
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Close; //关闭Form
end;
 
不使用原来的标题栏,自己画个标题栏。
 
顶部