Top > OOobbs2 > 97

OOobbs2/97 Edit

  • サマリ: マクロでCalcシート上の指定ボタンにフォーカスを移したい
  • 環境: Basic
  • 状態: 解決
  • 投稿者: のの?
  • 投稿日: 2008-03-24 (月) 13:29:32

質問 Edit

Calcのシート上に貼り付けたボタンを押下し、マクロを実行させてマクロを終了する際に、シート上に貼り付けた別のボタンへフォーカスを移動するにはどのようにすれば良いでしょうか? 申し訳ありませんが、アドバイス頂けないでしょうか?

■目的は、シート上のスタートボタンを押下するとシート上のラベルフィ  ールドにランダムに整数を表示させ続け、シート上のストップボタンを  押下するとラベルフィールドの整数をストップしたいのです。  (苦肉の策として、イベントマクロが終了しないとラベルフィールドが   表示更新されないので、いったんイベントマクロを終了させて他の   ボタン(何でも良いのですが)へフォーカス移動を繰り返してラベル   フィールドの表示更新しようと考えています。)

回答 Edit

  • 私の環境 OOo 2.3.1 WinXP ではラベルフィールドの表示は更新されますが・・・。

次のようにすれば別のボタンへフォーカスを移すことができます。

fileOOobbs2-97.ods

スタートボタンを押したときのイベントに Rnd_Start を割り当て、押されたときのアクションイベントの Source からコントロールコンテナを取得、別のボタンのコントローラを探してフォーカスを移します。

Dim bStarted As Boolean

' start button pushed

Sub Rnd_Start( oEv As com.sun.star.lang.ActionEvent )
  oBtn_Start = oEv.Source
  ' context means control container
  oContext = oBtn_Start.getContext()
  
  SetFocusTo(oContext,"btn_stop")
  
  oLabel = GetLabelModel
  bStarted = True

  Randomize
  
  Do While bStarted
    oLabel.Label = Int(Rnd() * 1000)
  Loop
End Sub

Rnd_Stop をストップボタンのイベントに割り当てます。

' stop button pushed

Sub Rnd_Stop
  bStarted = False
End Sub

フォームでのコントロールコンテナでは getControl メソッドがうまく動かないので逐一コントロールコントローラからモデルを取得、名前を判定する必要があります。 指定した名前のコントロールが見つかるとフォーカスを移します。

' change focus to the control

' oContext: control container
' sCtrlName: name of the control that want to get focus

Sub SetFocusTo( oContext, sCtrlName )
  oControls = oContext.getControls()
  
  ' search control
  For i = 0 To UBound(oControls) Step 1
    If oControls(i).getModel().Name = sCtrlName Then
      oLocCtrl = oControls(i)
      Exit For
    End If
  Next
  
  If NOT IsEmpty(oLocCtrl) Then
    oLocCtrl.setFocus()
  End If
End Sub

数値を表示するラベルフィールドモデル取得用。

' get label's model from the form
Function GetLabelModel
  oDoc = ThisComponent
  oDrawPages = oDoc.getDrawPages()
  oObj1 = oDrawPages.getByIndex(0)
  oForms = oObj1.getForms()
  oObj2 = oForms.getByName("Standard")
  GetLabelModel = oObj2.getByName("LabelField")
End Function
  • はにゃ? 2008-03-24 (月) 17:31:05
  • 解決しました。有難う御座いました。 -- のの 2008-05-29 (木) 12:32:28

感想,コメント,メモ Edit



Attach file: fileOOobbs2-97.ods 905 download [Information]

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes