
A mellékelt példaprogram megnyitása előtt a ConvertPanel.pas-ban levő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
Komponensünket egy TCustomPanel osztályból származtatjuk, melyen három Edit és egy ComboBox fog elhelyezkedni. Mindezeket akkor hozzuk létre, amikor a komponensünk betöltődik.
procedure TConvertPanel.Loaded;
begin
inherited;
A ValueEdit nevű EditBox-ban kérjük be az átváltandó értéket. Beállítjuk a Panel szélétől és tetejétől való távolságát, valamint a szélességét. Mivel nem szeretnénk, ha bármi is lenne benne induláskor, ezért a Text property-jét üresre állítjuk.
ValueEdit:=TEdit.Create(Nil);
ValueEdit.Parent:=Self;
ValueEdit.Left:=20;
ValueEdit.Top:=20;
ValueEdit.Text:='';
ValueEdit.Width:=100;
A Combo-ban fogjuk eltárolni az SI-n kívüli mértékegységeket. Először beállítjuk, hogy a ValueEdit mellett jelenjen meg a komponensen, azzal egy magasságban. Ezután feltöltjük a mértékegységek neveivel az Items property-n keresztül. Végül a Sorted tulajdonságát igazra állítjuk, így az adatok ABC sorrendbe rendezve jelennek meg a ComboBox-ban.
Combo:=TComboBox.Create(Nil);
Combo.Parent:=Self;
Combo.Left:=ValueEdit.Left+ValueEdit.Width+10;
Combo.Top:=ValueEdit.Top;
Combo.Text:='';
Combo.Width:=200;
Combo.Items.Add('fok [°]');
Combo.Items.Add('szögperc [´]');
Combo.Items.Add('szögmásodperc [´´]');
...
Combo.Sorted:=True;
A fentiekhez hasonló módon beállítjuk a ResultEdit és ResultUnit Edit dobozok megjelenésének paramétereit is. Mindkettő ReadOnly tulajdonságát igazra állítjuk, hogy ne lehessen megváltoztatni a tartalmukat.
ResultEdit:=TEdit.Create(Nil);
ResultEdit.Parent:=Self;
ResultEdit.Left:=ValueEdit.Left;
ResultEdit.Top:=ValueEdit.Top+30;
ResultEdit.Text:='';
ResultEdit.Width:=100;
ResultEdit.ReadOnly:=True;
ResultUnit:=TEdit.Create(Nil);
ResultUnit.Parent:=Self;
ResultUnit.Left:=ResultEdit.Left+ResultEdit.Width+10;
ResultUnit.Top:=ValueEdit.Top+30;
ResultUnit.Text:='';
ResultUnit.Width:=200;
ResultUnit.ReadOnly:=True;
A végén meghívjuk a Paint metódust, mely kirajzolja a Form-ra a Panel-t.
A ConvertPanel Caption tulajdonságát, valamint magassági és szélességi értékeit beállítjuk, mielőtt kirajzolnánk azt a Form-ra.
procedure TConvertPanel.Paint;
begin
Caption:='';
Width:=350;
Height:=90;
inherited;
end;
Létrehozunk egy Convert nevű függvényt, melyet programból meghívhatunk. Ebben levizsgáljuk a ValueEdit és a Combo tartalmát, és azoknak megfelelően elvégezzük a konverziót.
procedure TConvertPanel.Convert;
begin
if (ValueEdit.Text<>'') and (Combo.Text<>'') then
begin
if Combo.ItemIndex=0 then
begin
ResultEdit.Text:=FloatToStr(StrToFloat(ValueEdit.text)*101325);
ResultUnit.Text:='Pascal [Pa]';
end;
if Combo.ItemIndex=1 then
begin
ResultEdit.Text:=FloatToStr(StrToFloat(ValueEdit.text)*100000);
ResultUnit.Text:='Pascal [Pa]';
end;
if Combo.ItemIndex=2 then
begin
ResultEdit.Text:=FloatToStr(StrToFloat(ValueEdit.Text)*1.496)+' *10^11';
ResultUnit.Text:='méter [m]';
end;
...
A mellékelt példaprogramban nem kell mást tennünk, mint meghívni a fenti függvényt az alábbi módon.
Az eredmény közvetlenül a komponens ResultEdit illetve ResultUnit Edit dobozaiban fog megjelenni.