HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Komponensek együttes engedélyezését és letiltását végző komponens


Példaprogram letöltése

10684 bájt

Bizonyos feltételek teljesülésekor előfordulhat, hogy a Form-on több komponenst is egyszerre le kell tiltani, vagy éppen engedélyezni. Ilyenkor megtehetjük azt is, hogy egy Panel komponensre helyezzük ezeket a komponenseket, és a Panel Enabled property-jét állítjuk. Ez a megoldás működik, viszont az így letiltott komponensek képe változatlan marad, tehát a felhasználó csak azt fogja észrevenni, hogy hiába kattintgat az egérrel rajtuk. A mellékelt komponenssel ez a kis probléma megoldható, mivel a megadott komponensben található komponenseket ténylegesen letiltja, így azok képe ennek megfelelően fog változni.
A mellékelt példaprogram megnyitása előtt az Enabler.pas-ban lévő komponenst telepítenie kell a Delphi alá.

A komponens Control property-jében megadhatunk egy TWinControl osztályból származó komponenst, vagy akár magát a Form-ot is. Az Enable logikai típusú property értékének állításával engedélyezhetjük, illetve letilthatjuk a megadott komponensben található komponenseket. Amikor az Enable property értékét megváltoztatjuk, akkor jön létre az OnChange esemény.

A komponensek Enabled property-jének beállítását a ScanControls eljárás végzi el. Ez rekurzívan végigolvassa a komponensben található komponenseket, és mindegyiknél beállítja az Enabled property értékét az Enable property értékére. A rekurzív beolvasásra azért van szükség, mert a komponensben található komponensek is tartalmazhatnak további komponenseket (pl. egy Panel-en még egy Panel, stb.).
Egy komponensben található komponenseket a Controls tömb property-n keresztül érhetünk el, ezek számát pedig a ControlCount property-ből olvashatjuk ki. Egy ciklusban végigmegyünk a Controls property elemein, és sorban beállítjuk az Enabled property-ket. Ha a soron következő komponens a TWinControl osztályból származik, akkor rekurzívan meghívjuk az eljárást paraméterként átadva ezt a komponenst.
    i:=0;
    while i<Ctrl.ControlCount do begin
      Ctrl.Controls[i].Enabled:=FEnable;
      if Ctrl.Controls[i] is TWinControl then ScanControls(TWinControl(Ctrl.Controls[i]));
      inc(i);
    end;



Cikksorozat

#IDKategóriaCikk címeSorozat
3916WindowsA javascript nyelv bemutatása1. rész
3946WindowsJavascript változók és operátorok2. rész
3975WindowsKódvezérlés JScript-ben3. rész
4004WindowsFüggvények és objektumok4. rész
4036WindowsFejlett funkciók a JavaScript nyelvben5. rész
4066WindowsFejlett funkciók a JavaScript nyelvben - folytatás6. rész
4116WindowsReguláris kifejezések7. rész
4145WindowsReguláris kifejezések - folytatás8. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2001 évkönyv 579. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |