Delphi - Rendszer menü

1. rész

forráskód letöltése
Minden Form jobb felső sarkában találunk egy kis nyomógombot rajta egy X-el. Ezzel lehet bezárni az adott ablakot, illetve a programot. A mellékelt példából megtudhatjuk, hogy hogyan lehet ezt a gombot letiltani, majd ismét engedélyezni. A példa második részéből az is kiderül, hogy ezt nemcsak a saját programunknál tehetjük meg egyszerűen, hanem más programoknál is. Minden Form jobb felső sarkában találunk egy kis nyomógombot rajta egy X-el. Ezzel lehet bezárni az adott ablakot, illetve a programot. A mellékelt példából megtudhatjuk, hogy hogyan lehet ezt a gombot letiltani, majd ismét engedélyezni. A példa második részéből az is kiderül, hogy ezt nemcsak a saját programunknál tehetjük meg egyszerűen, hanem más programoknál is.

Ez a gomb letiltása tulajdonképpen nem más, mint a Form bal felső sarkában található rendszer menünek a Close (Bezár) menüpontja. Ha ezt a menüpontot letiltjuk vagy engedélyezzük, akkor ezzel elérjük azt is, hogy a jobb felső sarokban lévő gomb is tiltottá, vagy engedélyezetté válik.
Tiltott állapotban csak az Alt+F4 billentyűkombinációval tudjuk bezárni az ablakunkat.

A menüpontot az EnableMenuItem függvénnyel tudjuk manipulálni. E függvény három paramétert vár. Az elsőben a menürendszer azonosítóját (handle) kell megadnunk. Ezt a GetSystemMenu függvénnyel tudjuk lekérdezni. Második paraméterként a menüpont azonosítóját kell megadnunk. Ez a Close menüpont esetén SC_CLOSE lesz. Végül harmadik paraméterként a végzendő műveletet kell átadni az EnableMenuItem függvénynek.

A példaprogram második részének kipróbálása előtt nyissa meg a mellékelt Untitled.txt állományt. Ha egy másik program menürendszeréhez kell hozzáférnünk, akkor először meg kell szereznünk annak a programnak az azonosítóját (handle). Ezt a FindWindow függvénnyel tesszük.

Ha ez megvan, akkor a továbbiakban ugyanúgy járunk el mint az előbb, azzal különbséggel, hogy most a GetSystemMenu függvénynél nem a saját ablakunk leíróját (handle) adjuk át, hanem a másik programét.

Ha Ön magyar nyelvű operációs rendszert használ, akkor valószínűleg módosítania kell a példaprogramot az alábbi sornál: h:=FindWindow(nil, 'Untitled.txt - Notepad'); Itt a keresendő ablak neve, ha nem a fenti, akkor nyilván nem fogja a FindWindow függvény megtalálni, így a menüpontját sem tudjuk letiltani. Miután megnyitotta a TXT-t, ellenőrizze le hogy a Notepad fejléce a fent megadott sztringet tartalmazza-e vagy sem.

Rendszer menü cikksorozat

Rendszer menü - 1. rész

Rendszer menü - 2. rész