This tutorial will show you how to change command button properties at run time.
Table of Contents
Pre-requisite
This tutorial assumes that you know how to create a simple macro and a simple dialog. If you are unaware of the same, read below two tutorials before you proceed.
Using form controls
Using dialog controls
If you are looking for something else, head over to below link which contains all the LibreOffice macro tutorials list:
Changing Properties
The button control properties can be changes via Properties window during dialog design. However, it is sometimes needed to change them during runtime as well.
Properties window where you can change button properties during dialog design.
In this tutorial, we will try to do something like this:
Background Color
The background color of command button can be changed using BackgroundColor
property of its Model. The model for the button can be accessed via getModel
method of the control. The color can be specified via RGB()
function.
oB1 = oDialog1.GetControl("CommandButton1")
with oB1.getModel
.BackgroundColor=RGB(255,0,0)
End With
However, this is not sufficient to change the color because by default the LibreOffice dialogs adopts the Ubuntu/Linux desktop themes. The button colors remains same even if you execute above codes. To solves this, you have to turn off the NativeWidgetLook
property of the entire dialog. Once you do that, you can change the look of the controls inside the dialog as per your needs. For our example, using below code you can turn it off.
oDialog1.getPeer().setProperty( "NativeWidgetLook", False )
Size of Control
To change the height and width of button at runtime, use Height and Width property of the control. This can be accessed via Model of the control.
oB1 = oDialog1.GetControl("CommandButton4")
oB1.Model.Width = 63
oB1.Model.Height = 27
Change the Label
To change the label text of the button use Label property. The property can be accessed without the Model of the control.
oB1 = oDialog1.GetControl("CommandButton2")
oB1.Label ="Hello!!"
Enable/Disable the control
To enable/disable the control use the Enable property.
oB1 = oDialog1.GetControl("CommandButton3")
oB1.Enable = False
You can put together all these functions in separate functions and assign them for each of the commandbuttons.
Complete Macro
REM ***** BASIC *****
'
' LibreOffice Macro Tutorials
' Change Button Properties at Runtime
'
' www.debugpoint.com
' Author: Arindam
'
Dim oDialog1 As Object
Sub StartDialog1()
oDialog1 = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
oDialog1.Execute()
End Sub
Sub Change_Look()
oB1 = oDialog1.GetControl("CommandButton1")
oDialog1.getPeer().setProperty( "NativeWidgetLook", False )
with oB1.getModel
.BackgroundColor=RGB(255,0,0)
End With
End Sub
Sub Change_Label()
oB1 = oDialog1.GetControl("CommandButton2")
oB1.Label ="Hello!!"
End Sub
Sub Disable_Button ()
oB1 = oDialog1.GetControl("CommandButton3")
oB1.Enable = False
End Sub
Sub Change_Size()
oB1 = oDialog1.GetControl("CommandButton4")
oB1.Model.Width = 63
oB1.Model.Height = 27
End Sub
Looking for Something Else?
If you are looking for something else in LibreOffice macro tutorials, Or, wants to learn more about it, please follow below link for complete Macro Tutorials Index: