Delphi - TActionList komponens

2. rész

forráskód letöltése
Az első évfolyam 9. számában láthattuk a TActionList komponens alapjait bemutató cikket. Most újabb felhasználási lehetőségeket mutatunk be. Az első évfolyam 9. számában láthattuk a TActionList komponens alapjait bemutató cikket. Most újabb felhasználási lehetőségeket mutatunk be.

Ez a komponens a Delphi 4.0-tól kezdve létezik és nagymértékben megkönnyítheti a programozási munkát. Nézzük az alábbi esetet:

Adott egy menürendszer és egy nyomógomb sor. A mi példánknál maradva mindegyikből két darab. Az egyik menüponthoz és nyomógombhoz ugyanazt a funkciót szeretnénk hozzárendelni. Míg a másik menüponthoz és a második nyomógombhoz egy másikat.

Sokszor előfordul olyan helyzet, hogy valamilyen feltétel szerint le kell tiltani, illetve engedélyezni kell egy-egy funkciót a programon belül. Képzeljük el azt az esetet, mikor egy dokumentum mentéséhez tartozó nyomógomb, illetve menüpont csak akkor lehet engedélyezett mikor a dokumentumban változás történt, tehát ténylegesen van mit menteni.
Ilyenkor külön kell gondoskodnunk a menüpont és külön a nyomógomb letiltásáról, ráadásul azt is figyelnünk kell, hogy ezt a tiltást/engedélyezést mikor, milyen feltételek beálltakor kell elvégeznünk.

Visszatérve a mi példánkhoz, miután létrehoztuk a menürendszert és feltettünk két menüpontot, úgy hogy egyik esetben sem állítottunk be semmilyen property-t, létrehozunk egy TActionList komponensben két cselekményt (Action-t). Ezeknél a Caption property-t beállítjuk 1-re és 2-re. Valamint létrehozzuk hozzájuk az OnExecute eseményt, melyhez most egy egyszerű kódot rendelünk: átállítjuk a Form-on található Label1 Caption property-t.

Ha ezzel megvagyunk, akkor jön a lényeg. A TActionList komponensnél az OnUpdate eseményhez létrehozunk egy eljárást és itt a Label1 Caption értékétől függően letiltjuk vagy engedélyezzük az első cselekményt, majd a másodiknál pont az ellenkezőjére váltunk az elsőhöz képest. Így a kettő közül az egyik mindig engedélyezve lesz ,a másik pedig tiltva.

Most már csak egy dolgunk van, a menüpontokhoz illetve nyomógombokhoz hozzá kell rendelnünk a cselekményeket. Válasszuk ki az első nyomógombot és az Action property-nél válasszuk az Action1 nevű cselekményt. Ennek hatására a nyomógomb Caption property-e automatikusan felveszi az Action1 Caption property-nek az értékét, valamint az OnClick-hez automatikusan bekerül az Action1Execute eljárás. Ugyanezt a műveletet kell elvégezni a másik nyomógombnál is, nyilván ott a második cselekményt kell választani (Action2).

Ha ez is megvan, akkor ne feledkezzünk meg a két menüpontról sem. Ott is az elsőnél az Action1-et, míg a másodiknál az Action2-t kell választani.

Ezek után a program máris futtatható. Ha megfigyeljük az egyik nyomógomb, illetve menüpont kiválasztásakor megváltozik a Label1 Caption értéke és a megfelelő nyomógomb, illetve menüpont letiltásra/engedélyezésre kerül.

Látható tehát, hogy minimális kódolással elértük a kívánt hatást. Arról nem is beszélve, hogy egy ilyen programot igen egyszerű továbbfejleszteni. Próbáljuk ki, hogy felteszünk a Form-ra két darab TCheckBox komponenst. Majd az elsőnél az Action property-nél válasszuk az Action1-et, míg a másodiknál az Action2-t és futtassuk újra a programot.

TActionList cikksorozat