Sun Microsystems
Termékek
 
Támogatás
 
 

Előző Előző     Tartalom     Tárgymutató     Következő Következő

Események

A StarOffice párbeszédablakai és űrlapjai olyan eseményorientált programozási modellen alapulnak, amelyben eseménykezelőket rendelhetünk a vezérlőelemekhez. Az eseménykezelő adott művelet bekövetkezésekor előre megadott eljárást futtat, még akkor is, ha a művelet egy másik esemény. Az eseménykezeléssel dokumentumokat szerkeszthetünk, adatbázisokat nyithatunk meg, vagy akár más vezérlőelemeket is elérhetünk.

A StarOffice vezérlőelemei különböző típusú és különböző helyzetekben indítható eseményeket ismernek fel. Ezek az események a következő négy csoportba sorolhatók:

  • Egérvezérlés: az egérműveleteknek megfelelő események (ilyen például az egyszerű egérmozgatás vagy kattintás a képernyő adott helyén)

  • Billentyűzetvezérlés: billentyűk megnyomásával indított események

  • Fókuszmódosítás: a StarOffice által a vezérlőelemek aktiválásakor vagy inaktiválásakor végrehajtott események

  • Vezérlőelemekre jellemző események: kizárólag bizonyos vezérlőelemekkel kapcsolatban előforduló események

Az eseményekkel való munkánál ügyeljünk arra, hogy a StarOffice fejlesztési környezetben létrehozzuk a kapcsolódó párbeszédablakot, és hogy az tartalmazza a szükséges vezérlőelemeket és dokumentumokat (ha az eseményeket űrlapra alkalmazzuk).

Két listát tartalmazó párbeszédablak tervező módban.

Az előző ábrán a StarOffice Basic fejlesztési környezete látható egy két listát tartalmazó párbeszédablakkal. A két lista között elhelyezett gombokkal az adatok áthelyezhetők az egyik listáról a másikra.

Ha az elrendezést meg szeretnénk jeleníteni a képernyőn, létre kell hozni a megfelelő StarOffice Basic eljárásokat, hogy azokat az eseménykezelők hívhassák. Bár ezeket az eljárásokat bármelyik modulban használhatjuk, célszerűbb használatukat két modulra korlátozni. A kód egyszerűen olvasható és érthető lesz, ha beszédes nevet adunk ezeknek az eljárásoknak. A makrókból közvetlenül egy általános programeljárásra való ugrás általában nehezen érthető kódot eredményez. Ehelyett a kód karbantartásának és hibakeresésének egyszerűsítéséhez érdemes egy másik eljárást is létrehozni, amely az eseménykezelés belépési pontjaként szolgál. Ez még akkor is hasznos, ha kizárólag a céleljárás hívását tartalmazza.

A következő példa kódja egy bejegyzést helyez át a párbeszédablak bal oldali listájáról a jobb oldaliba.

Sub cmdSelect_Initiated

   Dim objList As Object

   lstEntries = Dlg.getControl("lstEntries")

   lstSelection = Dlg.getControl("lstSelection")



   If lstEntries.SelectedItem > 0 Then

      lstSelection.AddItem(lstEntries.SelectedItem, 0)

      lstEntries.removeItems(lstEntries.SelectItemPos, 1)

   Else

      Beep

   End If

End Sub

Ha ezt az eljárást a StarOffice Basic környezetben hoztuk létre, a párbeszédablak-szerkesztő tulajdonságablakában a kívánt eseményhez rendelhetjük.

Események hozzárendelése makrókhoz.

A hozzárendelést végrehajtó párbeszédablak a StarOffice Basic összes eljárását felsorolja. Eljárás eseményhez rendeléséhez jelöljük ki az eljárást, majd kattintsunk a Hozzárendelés gombra.

Paraméterek

Adott esemény előfordulása nem mindig elegendő a megfelelő válasz megadásához, ehhez további információra is szükség lehet. Például egy egérkattintás feldolgozásához ismerni kell a képernyő azon helyét, ahol az egérgombot megnyomták.

A StarOffice Basic rendszerben objektumparamétereket használhatunk, hogy az eljárás számára további információval szolgáljunk egy eseményről, például:

Sub ProcessEvent(Event As Object)



End Sub

Az Event objektum felépítési pontossága és tulajdonságai az eljáráshívás által indított esemény típusától függenek. A következő részek részletesen bemutatják az eseménytípusokat.

Az esemény típusától függetlenül valamennyi objektum hozzáférést biztosít a megfelelő vezérlőelemhez és modelljéhez. A vezérlőelem az

Event.Source 

míg modellje az

Event.Source.Model

segítségével érhető el. Ezek a tulajdonságok esemény indításához használhatók egy eseménykezelőn belül.

Egéresemények

A StarOffice Basic a következő egéreseményeket ismeri fel:

  • Egérmozgatás - a felhasználó mozgatja az egeret

  • Egérmozgatás billentyű megnyomása közben - a felhasználó billentyű megnyomása mellett mozgatja az egeret

  • Egérgomb megnyomása - a felhasználó megnyomja valamelyik egérgombot

  • Egérgomb felengedése - a felhasználó felengedi valamelyik egérgombot

  • Egér kívülre kerül - a felhasználó az aktuális ablakon kívülre mozgatja az egeret

A kapcsolódó eseményobjektumok felépítését a com.sun.star.awt.MouseEvent struktúra definiálja, amely a következő adatokat szolgáltatja:

  • Buttons (rövid egész szám) - megnyomott gomb (egy vagy több állandó a com.sun.star.awt.MouseButton tulajdonságnak megfelelően).

  • X (hosszú egész szám) - az egér X koordinátája képpont mértékegységben a vezérlőelem bal felső sarkától mérve

  • Y (hosszú egész szám) - az egér Y koordinátája képpont mértékegységben a vezérlőelem bal felső sarkától mérve

  • ClickCount (hosszú egész szám) - az egéreseményhez kapcsolódó kattintások száma (ha a StarOffice elegendően gyorsan válaszol, akkor a ClickCount értéke a dupla kattintásnál is 1 lesz, mivel csak egy egyedi esemény kezdeményezése történt).

A com.sun.star.awt.MouseButton tulajdonságban az egérgombokhoz definiált állandók a következők:

  • LEFT - bal oldali egérgomb

  • RIGHT- jobb oldali egérgomb

  • MIDDLE - középső egérgomb

A következő példa az egér helyzetét és a megnyomott egérgombot adja eredményül:

Sub MouseUp(Event As Object)

   Dim Msg As String

   Msg = "Gomb: "

   If Event.Buttons AND com.sun.star.awt.MouseButton.LEFT Then

      Msg = Msg & "bal oldali "

   End If

   If Event.Buttons AND com.sun.star.awt.MouseButton.RIGHT Then

      Msg = Msg & "jobb oldali "

   End If

   If Event.Buttons AND com.sun.star.awt.MouseButton.MIDDLE Then

      Msg = Msg & "középső "

   End If

   Msg = Msg & Chr(13) & "Pozíció: "

   Msg = Msg & Event.X & "/" & Event.Y

   MsgBox Msg

End Sub


Előző Előző     Tartalom     Tárgymutató     Következő Következő