Top > OOobbs2 > 108

OOobbs2/108 Edit

  • サマリ: Calcシート上のボタンの状態をマクロから操作したい
  • 環境: Basic
  • 状態: 解決
  • 投稿者: のの?
  • 投稿日: 2008-05-29 (木) 12:41:06

質問 Edit

Calcシート上のボタンの状態をマクロからアクティブ、非アクティブの操作を行いたい。 色々調べたのですが分からなくて質問させてもらいます。 宜しくお願いします。

回答 Edit

  • Enabled プロパティで変更します。

「ドキュメントを開いたとき」などのイベントなどに割り当てるとき。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
Sub DocumentOpenEvent_PushButtonB
  oDoc = ThisComponent
  oForms = oDoc.getSheets().getByIndex(0).getDrawPage().getForms()
  
  oForm = oForms.getByName("Standard")
  
  If oForm.hasByName("PushButtonB") Then
    oButtonB_model = oForm.getByName("PushButtonB")
    If oButtonB_model.Enabled Then
      oButtonB_model.Enabled = False
    Else
      oButtonB_model.Enabled = True
    End If
  End If
End Sub

ボタンを押したときなどのフォームコントロールイベントから行うときなどはイベントオブジェクトから取得するのが一般的ですが、取得がすこしややこしいです。Sourece -> Model -> Parent から取得できるフォームオブジェクトが上記ドキュメントから取得できるオブジェクトと同じ物になります。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
Sub Button_A_Push( oEv As com.sun.star.awt.ActionEvent )
  ' getting the form is belonged by this button 
  oForm = oEv.Source.Model.Parent
  
  If oForm.hasByName("PushButtonB") Then
    oButtonB_model = oForm.getByName("PushButtonB")
    
    ' change button status
    If oButtonB_model.Enabled Then
      oButtonB_model.Enabled = False
    Else
      oButtonB_model.Enabled = True
    End If
  End If
End Sub

一例です。ドキュメントを開いたときのイベントでボタン B が無効になります。あとは、A を押すと B が…。

fileOOobbs2-108.ods

フォームのドキュメントも書かないといけませんねぇ。データベースがからむので面倒なんですが。

  • はにゃ? 2008-05-29 (Thu) 16:06:21
  • 早い回答有難う御座いました。解決しました。ダイアログのイメージでoCtl.setEnable(TRUE)などとしてました。。 -- のの 2008-05-30 (金) 10:20:18
  • ダイアログとは少し違って、コントローラがうまく動作しませんので、全部モデルでやってみてください。リストボックスの操作はダイアログのリストボックスの項目に少し書いてみました。やっぱりコントローラから行う方が楽ですが。 -- はにゃ? 2008-05-30 (金) 11:09:13

感想,コメント,メモ Edit



Attach file: fileOOobbs2-108.ods 913 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