
A mellékelt példaprogram megnyitása előtt a RemoveSystemMenu.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
Első lépésként létre kell hoznunk egy felsorolt típust, melyből halmaz típust is készítünk. Ezt használjuk fel a komponens SystemMenuItems property létrehozásakor. A komponens használatakor csak annyi a teendő, hogy e property-ben kiválasszuk, hogy melyik rendszermenü legyen látható és melyik ne. A komponens a program futásakor automatikusan állítja a menüpontok láthatóságát, így más teendőnk nincs.
TSystemMenuItem = (smClose, smMaximize, smMinimize, smMove, smNextWindow, smRestore, smSize);
TSystemMenuItems = set of TSystemMenuItem;
A komponens konstruktorában eltároljuk egy belső változóba a Form rendszermenüjének azonosítóját, melyet a GetSystemMenu függvény szolgáltat.
constructor TRemoveSystemMenu.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FSystemMenu:=GetSystemMenu((AOwner as TForm).Handle, false);
end;
Amikor a komponens Loaded eljárása fut és a program futási időben van, akkor ellenőrizzük sorban, hogy melyik menüpontot kell eltávolítanunk a rendszermenüből.
procedure TRemoveSystemMenu.Loaded;
begin
if not (csDesigning in ComponentState) then begin
Az egyes menüpontokat szükség esetén a DeleteMenu függvény hívásával tudjuk letörölni.
if (smClose in FSystemMenuItems) then begin
DeleteMenu(FSystemMenu, SC_CLOSE, MF_BYCOMMAND);
end;
if (smMaximize in FSystemMenuItems) then begin
DeleteMenu(FSystemMenu, SC_MAXIMIZE, MF_BYCOMMAND);
end;
...
end;
end;