Delphi - TPopupMenu létrehozása futási időben

forráskód letöltése
Ebből a cikkből megtudhatjuk, hogy miként lehet tetszőleges számban futási idő alatt menüpontokat létrehozni a TPopupMenu-höz. Az itt bemutatott eljárás természetesen teljes mértékben alkalmazható a TMainMenu komponens esetén is.

A menüpont futási időben való létrehozásra akkor lehet szükségünk, ha például helyzet érzékeny menürendszert szeretnénk használni, mivel ilyenkor attól függően, hogy hol és mikor nyomja le a felhasználó az egér jobb gombját mindig más és más menüpontokra van szükségünk. Ebből a cikkből megtudhatjuk, hogy miként lehet tetszőleges számban futási idő alatt menüpontokat létrehozni a TPopupMenu-höz. Az itt bemutatott eljárás természetesen teljes mértékben alkalmazható a TMainMenu komponens esetén is.

A menüpont futási időben való létrehozásra akkor lehet szükségünk, ha például helyzet érzékeny menürendszert szeretnénk használni, mivel ilyenkor attól függően, hogy hol és mikor nyomja le a felhasználó az egér jobb gombját mindig más és más menüpontokra van szükségünk.


A mellékelt példában mi most két menüpontot hozunk létre a program indulásakor. Az egyik az aktuális dátum lesz, míg a másik az aktuális idő.

A létrehozásnál szükségünk van egy TMenuItem típusú változóra. Ezzel hozzuk létre a menüpontot és ezen keresztül állítjuk be annak a szükséges property-eit, végül ezt felhasználva tudjuk hozzáadni a menürendszerhez az adott menüpontot.

Mivel mind a két menüponthoz ugyanazt az eseménykezelő eljárást (DoClick) rendeljük hozzá a menüpont OnClick eseményéhez, ezért szükségünk lesz arra, hogy majd az egyes menüpont lenyomásakor meg is tudjuk különböztetni őket. Ezért a menüpont Tag property-ét 1-re, illetve 2-re állítjuk a menüpontoknál.

A DoClick eseménykezelő eljárásban pedig vizsgáljuk, hogy az eseményt előidéző menüpontnak a Tag property-e milyen értéket tartalmaz, így külön tudjuk választani a két menüpont kezelését.