Kezdjünk egy új IntraWeb alkalmazást. Válasszuk a File – New – Other menüpontot. A megjelenő New Items ablakban kattintsunk az IntraWeb fülre, majd válasszuk a szokásos, Stand Alone Application-t.
Ha létrejött az új alkalmazás, helyezzünk el benne egy DataModule-t. Ehhez válasszuk a File – New – DataModule menüpontot. A DataModule-t nevezzük el DM-nek, majd mentsük el UDM néven.
Helyezzünk el rajta két TTable és két DataSource komponenst. A Table1 objektumon keresztül létesítsünk kapcsolatot a DBDEMOS adatbázis Customer.db táblájával. A DataSource1-et kapcsoljuk hozzá a táblához. A Table2 objektumot kapcsoljuk hozzá a DBDEMOS Orders.db táblájához. A tábla mezőszerkesztőjét használva állítsuk be, hogy csak a következő mezőket használjuk: CustNo, OrderNo, SaleDate, ShipDate, PaymentMethod, ItemsTotal, AmountPaid. A DataSource2-t kapcsoljuk hozzá a Table2-höz. A táblák Active tulajdonságát állítsuk igazra.
Az eddigi példák során láthattuk, hogy egy IntraWeb alkalmazásban a fő Form kivételével nem jönnek létre automatikusan a Form-ok, sőt az egyes unit-okban még példányváltozók sem kerülnek deklarálásra.
Most beillesztettünk az alkalmazásba egy DataModule-t, amely egy hagyományos elem. Az UDM állományban megtalálható a DM objektum deklarációja, de azt a rendszer nem hozza automatikusan létre.
Kattintsunk a Project – Options menüpontra. A Forms fülön látható, hogy egyik Form sem jön létre automatikusan és a DM sem. Ezt nem is tudjuk megváltoztatni.
Minden egyes létrehozott unit-ban, ahol használni szeretnénk a DM DataModule tábláit, a uses listában fel kell sorolnunk az UDM unit nevét.
Az UDM unitban már deklarálva van a DM példányváltozó. Mielőtt használnánk gondoskodnunk kell a létrehozásáról. Ezt megtehetjük, például a fő Form Create metódusában. A DM létrehozását is a WebApplication-nek kell felügyelnie. A formMain Create metódusában helyezzük el a létrehozás kódját.
DM:=TDM.Create(WebApplication);
Innen kezdve a program befejezéséig minden egyes Form, amely hivatkozik az UDM unitra, használhatja a DataModule-t.
Úgy illene, hogy ha mi hoztuk létre az objektumot, akkor szabadítsuk is fel az általa lefoglalt memóriaterületet. Ezt most azonban a rendszerre kell bíznunk. Sem a Free, sem a Destroy metódust nem használhatjuk. Ha mégis megpróbálnánk, akkor jön az Access Violation ablak.
A formMain-en helyezzünk el az IW Standard palettáról egy IWRegion komponenst. Ez a komponens ugyanazt a feladatot hivatott ellátni, mint a Panel. Tökéletesen alkalmas arra, hogy tartalmát kiemeljük a nagy fehér ablakban, az által, hogy beállítjuk a háttérszínét. Ezen fogjuk elhelyezni az első ablak elemeit.
Helyezzünk el rajta egy IWLabel komponenst, „Vevő neve:” felirattal, mellette egy IWComboBox-ot. Alattuk helyezzünk el egy IWButton komponenst is, felirata legyen a következő: „Rendelések lekérdezése”.
Az IWComboBox1-et a formMain Create metódusában töltjük fel elemekkel. A Create metódust bővítsük az alábbi kóddal.
with DM.Table1 do begin
First;
while not Eof do begin
IWComboBox1.Items.Add(FieldByName('Company').AsString);
Next;
end;
end;
Miután az előbb létrehoztuk a DM objektumot, most már nyugodtan használhatjuk.
Az Object Inspector-ban állítsuk az IWComboBox1 Sorted értékét igazra, a NoSelectionText tartalmát pedig magyarosítsuk: „-- Nincs kiválasztva –„.
Az IWButton1 OnClick eseményében először is a Table1 táblában pozícionálnunk kell az IWComboBox1 Text értéke alapján. Ehhez használjuk a Locate metódust.
if DM.Table1.Locate('Company',IWComboBox1.Text,[]) then begin
Ha megtaláltuk a rekordot, akkor a Table2-ben állítsuk be az alábbi szűrést.
DM.Table2.Filter:='CustNo='+DM.Table1.FieldByName('CustNo').AsString;
Ha a rekord nincs meg, akkor adjuk hibaüzenetet.
Most hozzuk létre a második ablakot, amely az Orders tábla tartalmát fogja megjeleníteni. Válasszuk a File – New – Other menüpontot, majd az IntraWeb fülről az Application Form elemet. Az új Form-nak adjuk az OrderForm nevet, majd mentsük el Unit1 néven. A uses listában itt is adjuk meg az UDM unit nevét.
A Form tetején helyezzünk el egy IWRegion komponenst, benne jelenítsük meg a Table1 tábla CustNo, Company és Addr1 mezőinek értékét. A megjelenítését IWDBLabel komponenseken keresztül végezzük. A komponensek az IW Data palettán találhatóak. Ugyanúgy kell használni őket, mint a hagyományos DBLabel komponenseket.
A Form-on helyezzünk el egy IWLink komponenst, amely segítségével, a tanult módon, biztosítsunk visszalépési lehetőséget az előző ablakba.
Az IWLink alá helyezzünk el az IW Data palettáról egy IWDBGrid-et. DataSource értékét állítsuk DM.DataSource2-re. A Table2 Active értéke hiába van igazra állítva, a Grid nem jeleníti meg szerkesztési időben a tábla tartalmát. Így egy picit körülményes beállítani a Grid megfelelő szélességét. Néhányszor futtatnunk kell az alkalmazást, mire a megfelelő értéket beállítjuk.
A Grid működése eltér a hagyományos DBGrid-től. Inkább egy HTML-ben megszokott táblázathoz hasonlít. Ennek megfelelően rendelkezik CellPadding és CellSpacing tulajdonságokkal is.
A Columns tulajdonságban a megjelenítendő oszlopokat egyesével kell beállítanunk. Létre kell hoznunk egy új elemet, majd be kell állítanunk, hogy melyik adatmező értékét mutassa. Szerencsére a Table2 komponensben már beállítottuk, hogy mely mezők jelenjenek meg, ezért itt most nincs dolgunk.
Alapértelmezés szerint a táblázatban nem látható az Indicator. Ha erre mégis szükségünk lenne, akkor az Options tulajdonságban bekapcsolhatjuk. A példaprogramunk szempontjából, most nincs rá szükségünk. Ugyanitt kapcsolhatjuk ki vagy be a fejlécek megjelenítését is.
A fejlécek és sorok színét a RowHeaderColor és RowCurrentColor tulajdonságokon keresztül állíthatjuk be.
A RowClick és RollOver értékét állítsuk igazra. A RollOverColor-ban pedig állítsunk be egy színt, amely kellőképpen eltér a háttértől. Ezzel azt érjük el, hogy amikor az egeret egy sor fölé helyezzük, annak háttere a beállított színre változik.
A Caption mezőben adjuk meg a „Rendelések” feliratot.
Mentsük el munkánkat, majd térjünk vissza a formMain-hez. Az IWButton OnClick eseményének végére helyezzük el az alábbi kódot.
with TOrderForm.Create(WebApplication) do
Show;
Mentsük el munkánkat, majd próbáljuk ki.