
Mellékelt példa megnyitása előtt szükséges egy ActiveXTest nevű virtuális könyvtár létrehozása, mely a példa mappájában található ActiveXTest alkönyvtárra mutat. Ehhez nyissa meg a mappa Tulajdonság ablakát és itt a Webmegosztás lapon engedélyezze a mappa megosztását olvasási és parancsfájlok futtatási jogával.
A példa használata előtt az ActiveXControl projekt fordítása után generálódott ActiveXControl.dll állományt helyezze el az ActiveXTest mappában, a WebForm1.aspx állomány mellé.
Kontrol elkészítése
A vezérlőként működtetett kód nem más, mint egy Windows-os, felhasználói kontrol, melyben tetszőleges vezérlőket használhatunk, és tetszőleges funkciókat implementálhatunk.
A kontrolt úgy készítjük, mintha Windows-os alkalmazásban való felhasználás lenne a célunk, a különlegesség a Webes űrlapon való felhasználásban van. A kontrolunk egyszerű, csupán egy ListBox kontrolt tartalmaz, melyben a hívó környezetből bevinni szándékozott input karakterláncokat tároljuk. A lista maximális elemszáma 10. A lista telítettségének jelzését egy ProgressBar kontrollal is jelezzük a példa kedvéért, melynek Webes megvalósítása körülményes, és kényelmetlen dolog volna.
Amennyiben a lista „megtelik”, egy üzenetpanel jelenik meg, tájékoztatva a felhasználót.
A kontrol nyilvános tagja egy SetText nevű property, melyen keresztül a hívó környezet kapcsolatot teremthet a kontrollal, akár JavaScript függvényen belül is. A property-t egy interfésztől örökli a kontrol, ennek kódja a következő:
public interface IMyActiveX
{
string SetText {set;get ;}
}
A property egy privát változót állít, a következőképpen kódolva:
private string list;
...
public string SetText
{
get
{
return list;
}
A property-t lekérdezve mindig a listába utoljára bevitt elemet kaphatjuk meg. A property-n keresztül pedig elemet adhatunk a listához.
set
{
list = value;
if (listBox1.Items.Count < 10)
{
listBox1.Items.Add(value);
progressBar1.PerformStep();
}
else
{
MessageBox.Show("A lista megtelt, több elemet nem vihet be!");
}
}
}
Amikor a lista elemszáma eléri a 10-et, akkor megjelenik a figyelmeztetés. Minden egyes új bevitelnél egyet mozdítunk a folyamatjelzőn is eközben.
Felhasználás Weblapon
A kontrol egyszerűen felhasználható, csak arra kell figyelnünk, hogy a hívó Webes űrlap elérje az assembly-t tartalmazó DLL-t. Ennek érdekében a dinamikus könyvtárat el kell helyezni a Web-alkalmazás mappájában, az ActiveXTest mappában.
A Weblapon példányosítunk egy objektumot az <object></object> elemek segítségével a következőképpen:
<OBJECT id="stringcontrol1" style="..." classid="ActiveXControl.dll#ActiveXControl.StringControl" name="stringcontrol1" VIEWASTEXT>
</OBJECT>
A DLL neve után a „#” jel segítségével hivatkozunk a névtér osztályára, a két nevet egymástól ponttal elválasztva.
A WebForm-ra helyezett beviteli mezőben meg kell adni a tárolandó karakterláncot, majd a BEVITEL gombra kell kattintani. Ekkor meghívódik a SetControlText JavaScript függvény, melyben értéket adunk a kontrol SetText property-jének.
function SetControlText()
{
document.all.stringcontrol1.SetText = document.all.textBox1.value;
document.all.textBox1.value = "";
}
A LEKÉRDEZ gomb segítségével le is kérdezhetjük a property aktuális értékét. Ekkor a GetControlLastText függvény fut le:
function GetControlLastText()
{
document.all.textBox2.value = document.all.stringcontrol1.SetText;
}