月別アーカイブ: 2013年12月

Libre:004 ブックの表示サイズを指定する

Excelの場合、以下のようにブックのサイズを変更できます。

windows(“ブック名”).hight =100

activewindow.height =100

このとき、ウインドウのサイズは変わりません。

 

しかし、LibreOfficeではシートとウインドウの

区別がないので、同じことはできないようです。

 

(もし知っているという方は、教えてください)

Libre:003 ウインドウを全画面表示にする

全画面表示にするには以下のとおりです。

Sub ksFullScreen

  document = ThisComponent.CurrentController.Frame

  dispatcher = createUnoService(“com.sun.star.frame.DispatchHelper”)

  dim args1(0) as new com.sun.star.beans.PropertyValue

  args1(0).Name = “FullScreen”

  args1(0).Value = true

  dispatcher.executeDispatch(document, “.uno:FullScreen”, “”, 0, args1())

 

End Sub

Libre:002 ウインドウの表示位置を指定する

ウインドウの位置はsetPosSizeで指定できます。

Excelの場合と違い、4つの引数を設定しますので、

少しだけ面倒です。

 

Sub ksWindowPosition
  dim vFrame as Object
  dim vWindow as Object
  dim vRect as Object
  dim intHeight as Integer
  dim intWidth as Integer
  dim intXPos as Integer
  dim intYPos as Integer

  vFrame = StarDesktop.getCurrentFrame()
  vWindow = vFrame.getContainerWindow()
  vRect = vWindow.getPosSize()

  intXPos= 100  <———xポジション
  intYPos= 100  <———yポジション

  intHeight= vRect.Height
  intWidth= vRect.Width 

  ‘MRIでプロパティを確認 
  Globalscope.BasicLibraries.LoadLibrary( “MRILib” )
  Mri vRect

  vWindow.setPosSize(intXPos, intYPos, intWidth, intHeight, 15)

End Sub

X-Ray and MRI for Libre office

Objectがどんなプロパティとメソッドを持っているか

調べるのは骨が折れます。

少しでも楽にするためのツールがあります。

それが、X-RayとMRIです。

以下引用

X-Ray Xray is a tool for the programmer of Basic macros using the API. Its purpose is to display the properties, methods, services, interfaces which are provided by an object variable.

Xray can display in a web browser the official API documentation about a property, method, service, interface of an object.

ダウンロードはここから。

下のマクロを実行すると、vWindowのプロパティ、メソッドの一覧が得られます。 

Sub Main
dim vFrame as Object
dim vWindow as Object

vFrame = StarDesktop.getCurrentFrame()
vWindow = vFrame.getContainerWindow()

Xray vWindow

End Sub

 


MRIの場合は。ここからExtensionをインストール。 

一旦再起動する。

(Extensionにはいくつかのバージョンがあるので注意すること、困ったらPython MRI extensionで検索) 

 

Sub Main
dim vFrame as Object
dim vWindow as Object

vFrame = StarDesktop.getCurrentFrame()
vWindow = vFrame.getContainerWindow()

Globalscope.BasicLibraries.LoadLibrary( “MRILib” )
Mri vWindow

End Sub

個人的には、MRIの方が使いやすです。

Libre:001 ウインドウの表示サイズを設定する

Excelの場合、ちゃんと定数が用意されていて、

Application.WindowStateプロパティにLong型を設定すればよい。

Application.WindowState = xlMaximized —> 最大化

Application.WindowState = xlMinimized —> 最小化

 

これと同じことをLibreで探してみたが、うまくいかない。

(調べたりないかもしれない。)

しかし、表示サイズを設定することはできる。

 

引数に画面サイズを渡します。

Sub reSize(X As Integer, Y As Integer)

  Dim aSize As New com.sun.star.awt.Size

  aSize.Width = X
  aSize.Height = Y

  thisComponent.CurrentController.Frame.ContainerWindow.setOutputSize(aSize)  

 

End Sub

0章プログラミングの基礎 > 引数

引数に関してメモを残しておく。

Sub Main

dim str str = “shimizu” second(str)

End Sub

 

Sub second (byVal str as string)

Msgbox(str)

end Sub

baseは大文字と小文字を区別しないので、 Mainとsecondプロシージャで表記に揺れが生じている。 激しくエディターで書きたい。

Libre office basicを開発するためのベストプラクティス は、どういうものなのだろうか。