HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

RadioGroup-hoz hasonló komponens készítése CheckBox-okkal


Példaprogram letöltése

6039 bájt

A CheckPanel egy speciális komponens, amely egy panelen CheckBox komponenseket jelenít meg. A panelen elhelyezkedő CheckBox-ok tömbként kezelhetőek. Ez jelentősen megkönnyíti használatukat, hiszen az egyes elemek így egy index segítségével elérhetőek és kezelhetőek. A komponenst akkor érdemes használni, amikor több, összetartozó kapcsolót szeretnénk megjeleníteni vagy használni.

A mellékelt példaprogram megnyitása előtt a Check.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
Komponensünket a TCustomPanel osztályból származtatjuk. A panelen fogjuk elhelyezni a CheckBox komponenseket, egymás alá, egymástól egyenlő távolságra.


CheckCaption property
Szükségünk van egy tulajdonságra, amely a CheckBox-ok Caption tulajdonságait fogja tárolni. Ez a tulajdonság a CheckCaption property. A CheckCaption a TStringList osztályból származik. Ebből adódóan, amikor fejlesztési időben szerkeszteni szeretnénk ezt a tulajdonságot, a Delphi String List Editor-ja jelenik meg. Forráskódból pedig a StringList-ekre vonatkozó utasításokkal kezelhető.
A CheckCaption tulajdonság kulcsfontosságú a komponens működésében. Az itt megadott elemek száma fogja meghatározni a CheckBox-ok számát. Minden egyes sorhoz egy külön CheckBox rendelődik.
A CheckCaption.Count metódussal kérdezhetjük le a CheckBox-ok számát.
Checked property
Ez a tulajdonság tömbként funkcionál. Lehetővé teszi, hogy az egyes CheckBox-ok Checked tulajdonságait lekérdezzük, illetve módosítsuk azokat. Egy elem lekérdezése a Checked[i] formával, értékének megadása pedig a Checked[i]:=True formával lehetséges. Vigyázzunk arra, hogy a tömb indexelése 0-val kezdődik, az utolsó elem pedig CheckCaption.Count-1.
OnCheckClick esemény
A komponens rendelkezik egy OnCheckClick eseménnyel. Ez az esemény mindig meghívódik, ha valamelyik CheckBox-ra rákattintunk.
A CheckListRefresh metódus
Amikor változtatunk a CheckCaption tulajdonságon, mindig meghívódik ez a metódus. Ez a metódus a felelős azért, hogy a panelen mindig CheckCAption.Count számú CheckBox legyen.
for i:=ControlCount-1 downto 0 do
  begin
    fCheckBox:=Controls[i] as TCheckBox;
    RemoveControl(fCheckBox);
  end;
for i:=0 to fCheckCaption.Count-1 do
  begin
    fCheckBox:=TCheckBox.Create(Nil);
    fCheckBox.Parent:=Self;
    fCheckBox.Left:=10;
    fCheckBox.Top:=10+i*20;
    fCheckBox.Caption:=fCheckCaption[i];
    fCheckBox.Width:=Width-20;
    fCheckBox.OnClick:=CheckBoxClick;
    InsertControl(fCheckBox);
  end;
Ahhoz, hogy ez teljesüljön, mindig letöröljük az előző CheckBox-okat, majd létrehozzuk az újakat, CheckCaption.Count darabot.
Hogy az OnCheckClick esemény működjön, minden egyes CheckBox OnClick eseményét a CheckBoxClick metódusra kell irányítani.
A Paint metódus
A CheckBox-ok rossz tulajdonsága, hogy Width tulajdonságuk nem változik az általuk megjelenített szöveg hosszával együtt. Ezért felül kell bírálnunk a Paint metódust és nekünk kell gondoskodnunk erről az eseményről.
for i:=0 to ControlCount-1 do
  begin
    fCheckBox:=Controls[i] as TCheckBox;
    fCheckBox.Width:=Width-20;
  end;
A GetChecked metódus
Result:=(Controls[Index*2+1] as TCheckBox).Checked;
Itt van egy kis trükk, ami sok fejfájást okozhat. A GetChecked metódus megkapja az Index paramétert, amikor a Checked[i] formát használjuk. Azonban a Controls tömbben csak minden második elem a CheckBox négyzet része, amibe a pipát tesszük, ezért itt az Index*2+1 elemre kell módosítani a hivatkozást.
Ugyanez a helyzet a SetChecked metódussal is.

Cikksorozat

#IDKategóriaCikk címeSorozat
3047WindowsAz XML bemutatása1. rész
3059WindowsAz XML bemutatása2. rész
3068WindowsAz XML bemutatása3. rész
3077WindowsAz XML bemutatása - deklarációk4. rész
3086WindowsAz XML bemutatása - MSXML, XSLT5. rész
3094WindowsAz XML bemutatása - DTD6. rész
3105WindowsXML adatok megjelenítése Excel-ben7. rész
3114WindowsDokumentum hivatkozások az XML-ben8. rész
3123WindowsXML adattípusok9. rész
3132WindowsXML adatok HTML oldalakon10. rész
3141WindowsXML Notepad11. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2002 évkönyv 643. 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 |