问题来源:
http://www.cnblogs.com/del/archive/2008/06/14/1221980.html#1225922
//这样就可以使当前窗口的关闭按钮变灰, 但系统菜单中会有一条多余的线
var
h: HMENU;
begin
h := GetSystemMenu(Handle, False);
DeleteMenu(h, SC_CLOSE, MF_BYCOMMAND);
end;
//这样也可以是当前窗口的关闭按钮变灰, 同时也去掉了分割线
var
h: HMENU;
begin
h := GetSystemMenu(Handle, False);
DeleteMenu(h, 6, MF_BYPOSITION);
DeleteMenu(h, 5, MF_BYPOSITION);
end;
//这是使当前 MDI 子窗口关闭按钮变灰的方法(在 MDI 窗体对应的代码中使用)
var
h: HMENU;
begin
h := GetSystemMenu(ActiveMDIChild.Handle, False);
DeleteMenu(h, 6, MF_BYPOSITION);
DeleteMenu(h, 5, MF_BYPOSITION);
end;
//这是使所有 MDI 子窗口关闭按钮变灰的方法(在 MDI 窗体对应的代码中使用)
var
h: HMENU;
i: Integer;
begin
for i := 0 to MDIChildCount - 1 do
begin
h := GetSystemMenu(MDIChildren[i].Handle, False);
DeleteMenu(h, 6, MF_BYPOSITION);
DeleteMenu(h, 5, MF_BYPOSITION);
end;
end;