问题来源: 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;

posted on 2008-06-14 20:00  万一  阅读(2767)  评论(2编辑  收藏  举报