
A mellékelt példaprogram megnyitása előtt az EditGroup.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponens Items tulajdonságában adhatjuk meg a megjelenítendő RadioButton-ok feliratait. Minden RadioButton alatt egy Edit mező is megjelenik, mely csak akkor aktív, ha a felette lévő RadioButton van bejelölve. Ezzel az Edit mezők kölcsönösen kizárják egymást.
A kijelölt elem indexét lekérdezhetjük és beállíthatjuk az ItemIndex tulajdonság segítségével.
Az éppen aktuális Edit mezőbe beírt szöveget bármikor lekérdezhetjük a GetText függvénnyel.
function GetText: String;
A függvény használatakor nem kell tudnunk, hogy melyik mező az aktív.
A mezők aktivitásától függetlenül, bármelyik mezőbe beállíthatunk egy szöveget a SetText metódus használatával.
procedure SetText(Index: Integer; Text: String);
Az első paraméterben a célmező indexét kell megadnunk, a másodikban a beírni kívánt szöveget.
A komponenst a TCustomGroupBox osztályból származtatjuk.
A Caption, Color, Font tulajdonságokat, valamint az eseményeket az ősosztálytól örököljük.
Hogy a komponens frissíteni tudja a megjelenítendő elemeket az Items property aktuális értékének megfelelően, létrehozzuk a RefreshItems metódust. A metódust csak akkor kell meghívnunk, amikor az Items property értéke módosul, vagy a komponens betöltődik (Loaded metódus).
A metódus először törli az előzőleg létrehozott komponenseket.
for i:=ControlCount-1 downto 0 do
RemoveControl(Controls[i]);
Miután törölte az előző elemeket, az Items property aktuális tartalmának megfelelően létrehozza az újakat. A létrejövő objektumok automatikusan a Controls tömbbe kerülnek. Minden új elem két újabb bejegyzés lesz a Controls tömbben. Az első a RadioButton, a második az Edit mező.
Amikor rákattintunk egy RadioButton-ra, fontos, hogy az ItemIndex értéke is változzon. Ezért a RadioButton-ok OnClick eseményét a DoClick eljárásra irányítjuk.
A DoClick eljárásban végigmegyünk a Controls tömbön, és megkeressük azt az elemet, amelyik be lett jelölve.
for i:=0 to FItems.Count-1 do
if (Controls[i*2] as TRadioButton).Checked then begin
FItemIndex:=i;
(Controls[i*2+1] as TEdit).Enabled:=True;
end
else
(Controls[i*2+1] as TEdit).Enabled:=False;
A többi elemet inaktív állapotba kapcsoljuk.
Az ItemIndex property értékének megfelelően, a Paint metódus felülírásával frissítjük a megjelenő elemek aktív állapotát. Ezért a SetItemIndex metódusban az új ItemIndex érték beállítása után elegendő meghívnunk az Invalidate metódust.