Difference between revisions of "EN/Documentation/BASIC Guide/Events"

From Apache OpenOffice Wiki
Jump to: navigation, search
(New page: {{EN/Documentation/BASICGuideTOC/v2 |ShowPrevNext=block |ShowPrevPage=block |PrevPage=Documentation/BASIC Guide/Properties |NextPage=Documentation/BASIC Guide/Control Elements |dial=block ...)
 
m
 
(3 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
{{delete|Should be removed because the used language is Italian and not English}}
 
{{EN/Documentation/BASICGuideTOC/v2
 
{{EN/Documentation/BASICGuideTOC/v2
 
|ShowPrevNext=block
 
|ShowPrevNext=block
Line 6: Line 7:
 
|dial=block
 
|dial=block
 
}}
 
}}
{{DISPLAYTITLE:イベント}}
+
{{DISPLAYTITLE:Eventi}}
 
   
 
   
{{OOo}} のダイアログとフォームは、イベント指向型のプログラミングモデルを基に構築されているため、各コントロール要素に対しては'''イベントハンドラ'''を指定できます。イベントハンドラは、特定のアクションが発生すると、定義済みの手順を実行します。▼イベントハンドラを利用することで、ドキュメントの編集やデータベースのオープンをはじめ、他のコントロール要素へのアクセスといった、各種の処理を制御できます。
 
  
{{OOo}} ▼ のコントロール要素は、様々な状況で発生する各種のイベントに対応しています。▼これらのイベントは、4 つのグループに分かれます。
+
                    Le finestre di dialogo e i formulari di {{OOo}} si basano su un modello di
 +
programmazione orientato agli eventi in cui è possibile assegnare '''gestori di eventi ''' agli
 +
elementi di controllo. Un gestore di eventi esegue una procedura predefinita quando si verifica un'azione particolare. Con i gestori di eventi si possono inoltre modificare documenti o aprire database, nonché accedere ad altri elementi di controllo.
  
* ''''''マウス制御: マウスの動作に関係するイベント (たとえば単なるマウスポインタの移動や、画面上の特定部分のクリックなど)
 
* ''''''キーボード制御: キーボードのキー操作に関係するイベント
 
* '''フォーカス変更''': コントロール要素が有効化または無効化されている場合に、{{OOo}} が実行するイベント。
 
* '''コントロール要素固有のイベント''': 特定のコントロール要素のみに発生するイベント。
 
  
イベントを利用した処理を行う場合は、{{OOo}} の開発環境でダイアログを構築して、必要なコントロール要素やドキュメント (フォームを使用する場合) を用意しておく必要があります。
+
                    Gli elementi di controllo di {{OOo}} riconoscono i diversi tipi di eventi attivabili nelle diverse situazioni. Questi tipi di eventi possono essere suddivisi in quattro categorie:
  
[[Image:documentation_basicguide_dlg_03.gif|none|thumb|500px|OpenOffice.org Basic の開発環境]]
+
* '''Controllo con il mouse''': eventi che corrispondono alle azioni del mouse, ad
 +
esempio semplici movimenti del mouse o clic su una particolare posizione dello schermo.
 +
* '''Controllo con la tastiera''': eventi che vengono attivati dalla pressione dei diversi
 +
tasti della tastiera.
 +
* '''Modifica dell'attivazione''': eventi eseguiti da {{OOo}} quando gli elementi di
 +
controllo sono attivati o disattivati.
 +
* '''Eventi specifici degli elementi di controllo''': eventi che si verificano solo in
 +
relazione a determinati elementi di controllo.
  
上記の表は {{OOo}} Basic の開発環境を示したもので、このダイアログウィンドウには 2 つのリストボックスが配置されています。▼この場合、2 つのリスト\'83\'7bックスの間に配置された\'83\'7bタンを使って、リスト内の各項目を相互に移動できるものとします。
+
Durante l'utilizzo degli eventi, verificare di creare la finestra di dialogo associata nell'ambiente di sviluppo di {{OOo}} e che tale finestra contenga gli elementi di controllo o i documenti richiesti (se intendete applicare gli eventi a un formulario).
  
このようなレイアウトを画面に表示させる場合は、イベントハンドラからの呼び出し用の手続きを {{OOo}} Basic のコード内に作成するようにしてください。▼このような手続きは、任意のモジュール内に記述できますが、使用するモジュールは 2 つまでにすることが推奨されます。▼またプログラムコードの可読性を高める観点からも、これらの手続き名には、その機\'94\'5cを簡潔に示す名前をつけておくべきです。▼\'83\'7dクロから汎用プログラムの手続きに直接ジャンプさせると、プログラムコードが不明瞭になる危険性があります▼バグ修正も含めたプログラムコード全体の管理性を高めておくには、たとえそれがターゲットとなる手続きを呼び出すだけの処理であっても、イベントハンドル用のエントリポイントとして利用する手続きを 1 つ別途作成しておくべきです。
+
[[Image:documentation_basicguide_dlg_03.gif|none|thumb|500px|Ambiente di sviluppo OpenOffice.org Basic]]
  
▼以下のサンプルコードは、ダイアログ上に配置された左側のリスト\'83\'7bックス内の項目の 1 つを、右側のリスト\'83\'7bックスへ移動します。
+
La figura soprastante mostra l'ambiente di sviluppo {{OOo}} Basic con una finestra di
 +
dialogo contenente due caselle di riepilogo. È possibile spostare i dati da un elenco all'altro utilizzando i pulsanti tra le due caselle di riepilogo.
 +
 
 +
Per visualizzare il layout a video, è necessario creare le procedure {{OOo}} Basic associate, in modo che possano essere richiamate dai gestori di eventi. Anche se potete utilizzare queste procedure in qualsiasi modulo, è consigliabile limitarne l'uso a due soli moduli. Per semplificare la lettura del codice, si consiglia inoltre di assegnare nomi espliciti e rappresentativi alle diverse procedure. Il passaggio a una procedura di programma generale direttamente da una macro può infatti produrre codice non chiaro. Per semplificare la manutenzione e la risoluzione degli errori del codice, si dovrebbe invece creare un'altra procedura che funga da punto di ingresso per la gestione degli eventi, anche se esegue solo una singola chiamata alla procedura di destinazione.
 +
 
 +
Il codice riportato nell'esempio seguente sposta una voce dalla casella di riepilogo sinistra alla casella di riepilogo destra di una finestra di dialogo.
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 45: Line 55:
 
</source>
 
</source>
  
この手続きを {{OOo}} Basic で記述したら、ダイアログエディタの属性ウィンドウを表示して、該当するイベントへの割り当てを行います。
+
Se la procedura è stata creata in {{OOo}} Basic, è possibile assegnarla a un evento richiesto utilizzando la finestra delle proprietà del Dialog Editor.
  
[[Image:documentation_basicguide_dlg_02.gif|none|thumb|400px|Assign Macro ダイアログ]]
+
[[Image:documentation_basicguide_dlg_02.gif|none|thumb|400px|Finestra di dialogo Assegna macro]]
  
このダイアログには、{{OOo}} Basic に記述したすべての手続きが表示されます。▼該当するイベントに手続きを割り当てるには、手続きを選択して、'''割り当て''' \'83\'7bタンをクリックします。
+
Nella finestra di dialogo vengono elencate tutte le procedure di {{OOo}} Basic. Per assegnare una procedura a un evento, selezionarla e fare clic su '''Assegna'''.
  
==▼パラメータ==
+
== Parametri ==
  
▼特定のイベントの発生だけでは、どのような処理を行うかの判定ができない場合もあります。▼そのようなケースでは、何らかの追加情報が必要となります。▼たとえば\'83\'7dウスクリックに関する処理では、どの位置で\'83\'7dウス\'83\'7bタンが押されたかの情報が利用できます。
+
Il verificarsi di un particolare evento non è sempre sufficiente per una risposta adeguata: potrebbero infatti essere richieste informazioni aggiuntive. Ad esempio, per elaborare un clic del mouse, può essere necessaria la posizione dello schermo in cui è
 +
stato premuto il mouse.
  
{{OOo}} Basic では以下のような方法で、イベントから手続きに対してオブジェクトパラメータを渡すことができます。
+
In {{OOo}} Basic potete utilizzare i parametri degli oggetti per fornire a una
 +
procedura ulteriori informazioni su un evento, ad esempio:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 63: Line 75:
 
</source>
 
</source>
  
<tt>Event</tt> オブジェクトの構造と属性は、手続き呼び出しを発生させるイベントタイプにより異なります。
+
La precisione con cui è strutturato l'oggetto <tt>Event</tt> e le sue proprietà dipendono dal
 +
tipo di evento che attiva la chiamata della procedura.
  
▼いずれのイベントタイプにせよ、すべてのオブジェクトは、割り当てられたコントロール要素およびモデルへのアクセスします。コントロール要素には、<tt>Event.Source</tt> および<tt>Event.Source.Model</tt> を使用したそのモデルでアクセスできます。
+
Indipendentemente dal tipo di evento, tutti gli oggetti consentono di accedere all'elemento di controllo pertinente e al relativo modello. L'elemento di controllo può
 +
essere raggiunto utilizzando <tt>Event.Source</tt> e il suo modello utilizzando <tt>Event.Source.Model</tt>.
  
▼これらの属性は、イベントハンドラ内で特定のイベントをトリガーする際に使用します。
+
Tali proprietà possono essere impiegate per attivare un evento all'interno di un gestore di eventi.
  
==▼\'83\'7dウスイベント==
+
== Eventi del mouse ==
  
{{OOo}} Basic では以下のマウスイベントを利用できます。
+
{{OOo}} Basic riconosce i seguenti eventi del mouse:
  
;<tt>Mouse moved</tt>:ユーザーによるマウスポインタの移動。
+
;<tt>Mouse moved</tt>:L'utente sposta il mouse
;<tt>Mouse moved while key pressed</tt>:ユーザーによるキーを押しながらのマウスによるドラッグ。
+
;<tt>Mouse moved while key pressed</tt>:L'utente trascina il mouse mentre tiene premuto un tasto
;<tt>Mouse button pressed</tt>:ユーザーによるマウスボタンの押し下げ。
+
;<tt>Mouse button pressed</tt>:L'utente preme un pulsante del mouse
;<tt>Mouse button released</tt>:ユーザーによるマウスボタンの解放。
+
;<tt>Mouse button released</tt>:L'utente rilascia un pulsante del mouse
;<tt>Mouse outside</tt>:ユーザーによるマウスポインタの現在のウィンドウ外への移動。
+
;<tt>Mouse outside</tt>:L'utente sposta il mouse fuori dalla finestra corrente
  
これらのイベントを扱うためのイベントオブジェクトは <idl>com.sun.star.awt.MouseEvent</idl> 構造体として定義されており、以下の情報を取り扱うことができます。
+
La struttura degli oggetti eventi associati è definita nella struttura <idl>com.sun.star.awt.MouseEvent</idl>, che fornisce le informazioni seguenti:
  
;<tt>Buttons (short)</tt>:押されたボタン ( <idl>com.sun.star.awt.MouseButton</idl> に定められた 1 つ以上の定数)
+
;<tt>Buttons (short)</tt>:Pulsante premuto (una o più costanti in conformità a <idl>com.sun.star.awt.MouseButton</idl>)
;<tt>X (long)</tt>:ピクセル単位で指定した、コントロール要素の左上隅を原点とするマウスポインタの X 座標。
+
;<tt>X (long)</tt>:Coordinata X del mouse, misurata in pixel a partire dall'angolo superiore sinistro dell'elemento di controllo
;<tt>Y (long)</tt>:ピクセル単位で指定した、コントロール要素の左上隅を原点とするマウスポインタの Y 座標。
+
;<tt>Y (long)</tt>:coordinata Y del mouse, misurata in pixel a partire dall'angolo superiore sinistro dell'elemento di controllo
;<tt>ClickCount (long)</tt>:マウスイベントに関係したクリック数 (ダブルクリックは 1 つのイベントとして処理されるため、{{OOo}} が十分高速に反応できる場合、<tt>ClickCount</tt> によるカウントも 1 となる)
+
;<tt>ClickCount (long)</tt>:numero di clic associati all'evento del mouse (se {{OOo}} può rispondere con velocità sufficiente, <tt>ClickCount</tt> è 1 anche per un doppio clic,
 +
poiché viene iniziato solo un evento)
  
<idl>com.sun.star.awt.MouseButton</idl> に定義されているマウスボタン関連の定数は、以下のものです。
+
Le costanti definite in <idl>com.sun.star.awt.MouseButton</idl> per i pulsanti del mouse sono:
  
;<tt>LEFT</tt>:マウスの左ボタン。
+
;<tt>LEFT</tt>:Pulsante sinistro del mouse
;<tt>RIGHT</tt>:マウスの右ボタン。
+
;<tt>RIGHT</tt>:Pulsante destro del mouse
;<tt>MIDDLE</tt>:中央マウスボタン。
+
;<tt>MIDDLE</tt>:Pulsante centrale del mouse
  
▼以下のサンプルコードでは、\'83\'7dウス\'83\'7bタンのクリック位置と押された\'83\'7bタンを\'95\'5c示します。
+
L'esempio seguente restituisce la posizione del mouse nonché il pulsante del mouse premuto:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 119: Line 134:
 
</source>
 
</source>
  
{{Documentation/Note|VBA に用意されている <tt>Click</tt> および <tt>Doubleclick</tt> イベントは {{OOo}} Basic では利用できません。{{OOo}} Basic では <tt>MouseUp</tt> イベントの代わりに <tt>click</tt> イベントを使用し、<tt>Doubleclick</tt> イベントについてはアプリケーションロジックの変更で対処します。}}
+
{{Note|Gli eventi <tt>Click</tt> e <tt>Doubleclick</tt> di VBA non sono disponibili in {{OOo}} Basic. Al loro posto, utilizzate l'evento di {{OOo}} Basic <tt>MouseUp</tt> per l'evento <tt>click</tt> e imitate l'evento <tt>Doubleclick</tt> modificando la logica dell'applicazione.}}
  
==▼キー\'83\'7bードイベント==
+
== Eventi della tastiera ==
  
{{OOo}} Basic では以下のキーボードイベントを利用できます。
+
In {{OOo}} Basic sono disponibili i seguenti eventi della tastiera:
  
;<tt>Key pressed</tt>:ユーザーによるキーの押し下げ。
+
;<tt>Key pressed</tt>:L'utente preme un tasto.
;<tt>Key released</tt>:ユーザーによるキーの解放。
+
;<tt>Key released</tt>:L'utente rilascia un tasto
  
▼どちらのイベントも、論理的 なキーアクションに対するもので、物理的 なキーアクションに直接対応するものではありません。つまり、1 つの文字の入力に複数キーのコンビネーションが必要な場合 (たとえば欧文のアクセント記号など)、これに対して {{OOo}} Basic が発生させるイベントは 1 つだけです。
+
Entrambi gli eventi sono relativi alle azioni di tasti logici e non ad azioni fisiche. Se l'utente preme diversi tasti per produrre un singolo carattere (ad esempio per aggiungere un accento a un carattere), in {{OOo}} Basic viene creato solo un evento.
  
▼また Shift キー や Alt キーなどの修飾キーを単独で押し下げても、それだけでは独立したイベントは発生しません。
+
Una singola azione di tasto per un tasto di modifica, come il tasto Maiusc o il tasto Alt,
 +
non crea un evento indipendente.
  
{{OOo}} Basic は、押し下げられたキーに関する情報を、イベントオブジェクトによりイベントハンドル用手続きに渡します。▼この場合は、以下の属性を利用できます。
+
Le informazioni su un tasto premuto vengono determinate dall'oggetto evento fornito da {{OOo}} Basic alla procedura per la gestione degli eventi, contenente le proprietà seguenti:
  
;<tt>KeyCode (short)</tt>:押されたキーのコード (<idl>com.sun.star.awt.Key</idl> に定められたデフォルト値)
+
;<tt>KeyCode (short)</tt>:Codice del tasto premuto (valori predefiniti conformi a <idl>com.sun.star.awt.Key</idl>)
;<tt>KeyChar (String)</tt>:入力された文字 (修飾キーによる効果も含めた結果)
+
;<tt>KeyChar (String)</tt>:Carattere immesso (tenendo conto dei tasti di modifica)
  
以下のサンプルコードでは、<tt>KeyCode</tt> 属性を利用して、Enter キーや Tab キーなどの制御用キーのうち何が押されたかを判定します。これらの制御用キーが押されていた場合は、該当するキーの名前を表示し、それ以外の場合は、入力された文字を表示します。
+
Nell'esempio seguente viene utilizzata la proprietà <tt>KeyCode</tt> per stabilire se è stato premuto il tasto Invio, il tasto Tab o un altro tasto di controllo. Se è stato premuto uno di tali tasti, viene restituito il nome del tasto, altrimenti viene restituito il carattere immesso:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 169: Line 185:
 
</source>
 
</source>
  
キーボード処理に使用するその他の定数については、『API Reference』の <idl>com.sun.star.awt.Key</idl> グループの定数値を参照してください。
+
Per reperire informazioni su altre costanti per la tastiera, consultare il riferimento per l'API nel gruppo di costanti<idl>com.sun.star.awt.Key</idl>.
  
==▼フォーカスイベント==
+
== Eventi di attivazione ==
  
▼フォーカスイベントは、コントロール要素へのフォーカス移動を判定するためのものです。▼たとえばユーザーが特定のコントロール要素での処理を終えたかを判定してから、ダイアログ上にある他のコントロール要素を更新するような場合、このイベントが利用できます。▼以下に、利用できるフォーカスイベントを示します。
+
Gli eventi di attivazione indicano se un elemento di controllo riceve o perde l'attivazione. Potete utilizzare tali eventi per determinare, ad esempio, se un utente ha terminato l'elaborazione di un elemento di controllo, consentendovi così di
 +
aggiornare altri elementi di una finestra di dialogo. Sono disponibili i seguenti eventi di attivazione:
  
;<tt>When receiving focus</tt>:要素がフォーカスを受け取ったとき。
+
;<tt>When receiving focus</tt>:L'elemento riceve l'attivazione
;<tt>When losing focus</tt>:要素がフォーカスを失ったとき。
+
;<tt>When losing focus</tt>:L'elemento perde l'attivazione
  
フォーカスイベント関係の <tt>Event</tt> オブジェクトは、以下のように構成されています。
+
Gli oggetti <tt>Event</tt> per gli eventi di attivazione sono strutturati come segue:
  
;<tt>FocusFlags (short)</tt>:フォーカスが変わります (<idl>com.sun.star.awt.FocusChangeReason</idl> に定められたデフォルト値)
+
;<tt>FocusFlags (short)</tt>:Causa della variazione di attivazione (valore predefinito conforme a <idl>com.sun.star.awt.FocusChangeReason</idl> )
;<tt>NextFocus (Object)</tt>:フォーカスを受け取るオブジェクト (<tt>When losing focus</tt> イベントのみ)
+
;<tt>NextFocus (Object)</tt>:Oggetto che riceve l'attivazione (solo per l'evento <tt>When losing focus</tt>)
;<tt>Temporary (Boolean)</tt>:一時的に失われたフォーカス。
+
;<tt>Temporary (Boolean)</tt>:L'attivazione viene persa temporaneamente
  
==▼コントロール要素の固有イベント==
+
== Eventi specifici degli elementi di controllo ==
  
▼これまで説明したイベントは、すべてのコントロール要素でサポートされていますが、その他にも特定のコントロール要素についてのみ定義された固有なイベントが存在します。▼これらのうち特に重要なものは以下のイベントです。
+
Oltre agli eventi sopracitati, supportati da tutti gli elementi di controllo, esistono
 +
anche alcuni eventi specifici definiti unicamente per alcuni elementi di controllo, tra i quali vengono riportati di seguito i più importanti:
  
;<tt>When Item Changed</tt>:コントロール要素の値の変更。
+
;<tt>When Item Changed</tt>:Il valore di un elemento di controllo cambia
;<tt>Item Status Changed</tt>:コントロール要素の変更のステータス。
+
;<tt>Item Status Changed</tt>:Lo stato di un elemento di controllo cambia
;<tt>Text modified</tt>:コントロール要素の変更のテキスト。
+
;<tt>Text modified</tt>:Il testo di un elemento di controllo cambia
;<tt>When initiating</tt>:コントロール要素を動作させるアクションの実行 (ボタンの押し下げなど)
+
;<tt>When initiating</tt>:Un'azione che viene eseguita quando è attivato l'elemento di controllo (se ad esempio è premuto un pulsante)
  
イベントを処理する場合、作動時のイベント<tt>When initiating</tt>などは、単にコントロール要素をクリックするだけで発生することがあるため、その扱いには注意が必要です (たとえばラジオボタンのクリック)。▼このような場合、コントロール要素のステータスが実際に変更されたかについてはチェックされません。このような「ブラインドイベント」による混乱を避けるには、変更前のコントロール要素の値を広域変数に保存しておき、イベント実行時にそうした値に変化があったかを確認するという手法が使えます。
+
Durante l'utilizzo degli eventi, notare che alcuni eventi, quali l'evento <tt>When initiating</tt> possono essere iniziati ogni volta che si fa clic con il mouse su alcuni elementi di controllo, ad esempio sui pulsanti di scelta. Non viene eseguita alcuna azione per controllare se lo stato dell'elemento di controllo è effettivamente variato. Per evitare il verificarsi di questi "eventi ciechi", salvate il valore precedente dell'elemento di
 +
controllo in una variabile globale, quindi verificate che tale valore sia variato durante l'esecuzione di un evento.
  
<tt>Item Status Changed</tt> イベントには、次の属性を使用できます。
+
Le proprietà dell'evento <tt>Item Status Changed</tt> sono le seguenti:
  
;<tt>Selected (long)</tt>:現在選択されているエントリ。
+
;<tt>Selected (long)</tt>:Voce attualmente selezionata
;<tt>Highlighted (long)</tt>:強調表示されているエントリ。
+
;<tt>Highlighted (long)</tt>:Voce attualmente evidenziata
;<tt>ItemId (long)</tt>:エントリの ID。
+
;<tt>ItemId (long)</tt>:ID della voce
  
 
{{PDL1}}
 
{{PDL1}}
 
{{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Events}}
 
{{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Events}}

Latest revision as of 14:04, 9 January 2020

Template:EN/Documentation/BASICGuideTOC/v2


                   Le finestre di dialogo e i formulari di Apache OpenOffice si basano su un modello di

programmazione orientato agli eventi in cui è possibile assegnare gestori di eventi agli elementi di controllo. Un gestore di eventi esegue una procedura predefinita quando si verifica un'azione particolare. Con i gestori di eventi si possono inoltre modificare documenti o aprire database, nonché accedere ad altri elementi di controllo.


                   Gli elementi di controllo di Apache OpenOffice riconoscono i diversi tipi di eventi attivabili nelle diverse situazioni. Questi tipi di eventi possono essere suddivisi in quattro categorie:
  • Controllo con il mouse: eventi che corrispondono alle azioni del mouse, ad

esempio semplici movimenti del mouse o clic su una particolare posizione dello schermo.

  • Controllo con la tastiera: eventi che vengono attivati dalla pressione dei diversi

tasti della tastiera.

  • Modifica dell'attivazione: eventi eseguiti da Apache OpenOffice quando gli elementi di

controllo sono attivati o disattivati.

  • Eventi specifici degli elementi di controllo: eventi che si verificano solo in

relazione a determinati elementi di controllo.

Durante l'utilizzo degli eventi, verificare di creare la finestra di dialogo associata nell'ambiente di sviluppo di Apache OpenOffice e che tale finestra contenga gli elementi di controllo o i documenti richiesti (se intendete applicare gli eventi a un formulario).

Ambiente di sviluppo OpenOffice.org Basic

La figura soprastante mostra l'ambiente di sviluppo Apache OpenOffice Basic con una finestra di dialogo contenente due caselle di riepilogo. È possibile spostare i dati da un elenco all'altro utilizzando i pulsanti tra le due caselle di riepilogo.

Per visualizzare il layout a video, è necessario creare le procedure Apache OpenOffice Basic associate, in modo che possano essere richiamate dai gestori di eventi. Anche se potete utilizzare queste procedure in qualsiasi modulo, è consigliabile limitarne l'uso a due soli moduli. Per semplificare la lettura del codice, si consiglia inoltre di assegnare nomi espliciti e rappresentativi alle diverse procedure. Il passaggio a una procedura di programma generale direttamente da una macro può infatti produrre codice non chiaro. Per semplificare la manutenzione e la risoluzione degli errori del codice, si dovrebbe invece creare un'altra procedura che funga da punto di ingresso per la gestione degli eventi, anche se esegue solo una singola chiamata alla procedura di destinazione.

Il codice riportato nell'esempio seguente sposta una voce dalla casella di riepilogo sinistra alla casella di riepilogo destra di una finestra di dialogo.

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

Se la procedura è stata creata in Apache OpenOffice Basic, è possibile assegnarla a un evento richiesto utilizzando la finestra delle proprietà del Dialog Editor.

Finestra di dialogo Assegna macro

Nella finestra di dialogo vengono elencate tutte le procedure di Apache OpenOffice Basic. Per assegnare una procedura a un evento, selezionarla e fare clic su Assegna.

Parametri

Il verificarsi di un particolare evento non è sempre sufficiente per una risposta adeguata: potrebbero infatti essere richieste informazioni aggiuntive. Ad esempio, per elaborare un clic del mouse, può essere necessaria la posizione dello schermo in cui è stato premuto il mouse.

In Apache OpenOffice Basic potete utilizzare i parametri degli oggetti per fornire a una procedura ulteriori informazioni su un evento, ad esempio:

Sub ProcessEvent(Event As Object)
 
End Sub

La precisione con cui è strutturato l'oggetto Event e le sue proprietà dipendono dal tipo di evento che attiva la chiamata della procedura.

Indipendentemente dal tipo di evento, tutti gli oggetti consentono di accedere all'elemento di controllo pertinente e al relativo modello. L'elemento di controllo può essere raggiunto utilizzando Event.Source e il suo modello utilizzando Event.Source.Model.

Tali proprietà possono essere impiegate per attivare un evento all'interno di un gestore di eventi.

Eventi del mouse

Apache OpenOffice Basic riconosce i seguenti eventi del mouse:

Mouse moved
L'utente sposta il mouse
Mouse moved while key pressed
L'utente trascina il mouse mentre tiene premuto un tasto
Mouse button pressed
L'utente preme un pulsante del mouse
Mouse button released
L'utente rilascia un pulsante del mouse
Mouse outside
L'utente sposta il mouse fuori dalla finestra corrente

La struttura degli oggetti eventi associati è definita nella struttura com.sun.star.awt.MouseEvent, che fornisce le informazioni seguenti:

Buttons (short)
Pulsante premuto (una o più costanti in conformità a com.sun.star.awt.MouseButton)
X (long)
Coordinata X del mouse, misurata in pixel a partire dall'angolo superiore sinistro dell'elemento di controllo
Y (long)
coordinata Y del mouse, misurata in pixel a partire dall'angolo superiore sinistro dell'elemento di controllo
ClickCount (long)
numero di clic associati all'evento del mouse (se Apache OpenOffice può rispondere con velocità sufficiente, ClickCount è 1 anche per un doppio clic,

poiché viene iniziato solo un evento)

Le costanti definite in com.sun.star.awt.MouseButton per i pulsanti del mouse sono:

LEFT
Pulsante sinistro del mouse
RIGHT
Pulsante destro del mouse
MIDDLE
Pulsante centrale del mouse

L'esempio seguente restituisce la posizione del mouse nonché il pulsante del mouse premuto:

Sub MouseUp(Event As Object)
 
   Dim Msg As String
 
   Msg = "Keys: "
   If Event.Buttons AND com.sun.star.awt.MouseButton.LEFT Then
     Msg = Msg & "LEFT "
   End If
 
   If Event.Buttons AND com.sun.star.awt.MouseButton.RIGHT Then
     Msg = Msg & "RIGHT "
   End If
 
   If Event.Buttons AND com.sun.star.awt.MouseButton.MIDDLE Then
     Msg = Msg & "MIDDLE "
   End If
 
   Msg = Msg & Chr(13) & "Position: "
   Msg = Msg & Event.X & "/" & Event.Y
   MsgBox Msg
 
End Sub
Documentation note.png Gli eventi Click e Doubleclick di VBA non sono disponibili in Apache OpenOffice Basic. Al loro posto, utilizzate l'evento di Apache OpenOffice Basic MouseUp per l'evento click e imitate l'evento Doubleclick modificando la logica dell'applicazione.

Eventi della tastiera

In Apache OpenOffice Basic sono disponibili i seguenti eventi della tastiera:

Key pressed
L'utente preme un tasto.
Key released
L'utente rilascia un tasto

Entrambi gli eventi sono relativi alle azioni di tasti logici e non ad azioni fisiche. Se l'utente preme diversi tasti per produrre un singolo carattere (ad esempio per aggiungere un accento a un carattere), in Apache OpenOffice Basic viene creato solo un evento.

Una singola azione di tasto per un tasto di modifica, come il tasto Maiusc o il tasto Alt, non crea un evento indipendente.

Le informazioni su un tasto premuto vengono determinate dall'oggetto evento fornito da Apache OpenOffice Basic alla procedura per la gestione degli eventi, contenente le proprietà seguenti:

KeyCode (short)
Codice del tasto premuto (valori predefiniti conformi a com.sun.star.awt.Key)
KeyChar (String)
Carattere immesso (tenendo conto dei tasti di modifica)

Nell'esempio seguente viene utilizzata la proprietà KeyCode per stabilire se è stato premuto il tasto Invio, il tasto Tab o un altro tasto di controllo. Se è stato premuto uno di tali tasti, viene restituito il nome del tasto, altrimenti viene restituito il carattere immesso:

Sub KeyPressed(Event As Object)
 
   Dim Msg As String
 
   Select Case Event.KeyCode
   Case com.sun.star.awt.Key.RETURN
     Msg = "Return pressed"
   Case com.sun.star.awt.Key.TAB
     Msg = "Tab pressed"
   Case com.sun.star.awt.Key.DELETE
     Msg = "Delete pressed"
   Case com.sun.star.awt.Key.ESCAPE
     Msg = "Escape pressed"
   Case com.sun.star.awt.Key.DOWN
     Msg = "Down pressed"
   Case com.sun.star.awt.Key.UP
     Msg = "Up pressed"
   Case com.sun.star.awt.Key.LEFT
     Msg = "Left pressed"
   Case com.sun.star.awt.Key.RIGHT
     Msg = "Right pressed"
   Case Else
     Msg = "Character " & Event.KeyChar & " entered"
   End Select
   MsgBox Msg
 
End Sub

Per reperire informazioni su altre costanti per la tastiera, consultare il riferimento per l'API nel gruppo di costanticom.sun.star.awt.Key.

Eventi di attivazione

Gli eventi di attivazione indicano se un elemento di controllo riceve o perde l'attivazione. Potete utilizzare tali eventi per determinare, ad esempio, se un utente ha terminato l'elaborazione di un elemento di controllo, consentendovi così di aggiornare altri elementi di una finestra di dialogo. Sono disponibili i seguenti eventi di attivazione:

When receiving focus
L'elemento riceve l'attivazione
When losing focus
L'elemento perde l'attivazione

Gli oggetti Event per gli eventi di attivazione sono strutturati come segue:

FocusFlags (short)
Causa della variazione di attivazione (valore predefinito conforme a com.sun.star.awt.FocusChangeReason )
NextFocus (Object)
Oggetto che riceve l'attivazione (solo per l'evento When losing focus)
Temporary (Boolean)
L'attivazione viene persa temporaneamente

Eventi specifici degli elementi di controllo

Oltre agli eventi sopracitati, supportati da tutti gli elementi di controllo, esistono anche alcuni eventi specifici definiti unicamente per alcuni elementi di controllo, tra i quali vengono riportati di seguito i più importanti:

When Item Changed
Il valore di un elemento di controllo cambia
Item Status Changed
Lo stato di un elemento di controllo cambia
Text modified
Il testo di un elemento di controllo cambia
When initiating
Un'azione che viene eseguita quando è attivato l'elemento di controllo (se ad esempio è premuto un pulsante)

Durante l'utilizzo degli eventi, notare che alcuni eventi, quali l'evento When initiating possono essere iniziati ogni volta che si fa clic con il mouse su alcuni elementi di controllo, ad esempio sui pulsanti di scelta. Non viene eseguita alcuna azione per controllare se lo stato dell'elemento di controllo è effettivamente variato. Per evitare il verificarsi di questi "eventi ciechi", salvate il valore precedente dell'elemento di controllo in una variabile globale, quindi verificate che tale valore sia variato durante l'esecuzione di un evento.

Le proprietà dell'evento Item Status Changed sono le seguenti:

Selected (long)
Voce attualmente selezionata
Highlighted (long)
Voce attualmente evidenziata
ItemId (long)
ID della voce
Content on this page is licensed under the Public Documentation License (PDL).
Personal tools