Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/LibreOffice/wizards/source/access2base/   (Office von Apache Version 25.8.3.2©)  Datei vom 5.10.2025 mit Größe 14 kB image not shown  

Quelle  CommandBar.xba   Sprache: unbekannt

 
Spracherkennung für: .xba vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="CommandBar" script:language="StarBasic">
REM =======================================================================================================================
REM ===     The Access2Base library is a part of the LibreOffice project.         ===
REM ===     Full documentation is available on http://www.access2base.com         ===
REM =======================================================================================================================

Option Compatible
Option ClassModule

Option Explicit

REM -----------------------------------------------------------------------------------------------------------------------
REM --- CLASS ROOT FIELDS                               ---
REM -----------------------------------------------------------------------------------------------------------------------

Private _Type   As String  ' Must be COMMANDBAR
Private _This   As Object  ' Workaround for absence of This builtin function
Private _Parent   As Object
Private _Name   As String
Private _ResourceURL As String
Private _Window   As Object  ' com.sun.star.frame.XFrame
Private _Module   As String
Private _Toolbar  As Object
Private _BarBuiltin  As Integer  ' 1 = builtin, 2 = custom stored in LO/AOO (Base), 3 = custom stored in document (Form)
Private _BarType  As Integer  ' See msoBarTypeXxx constants

REM -----------------------------------------------------------------------------------------------------------------------
REM --- CONSTRUCTORS / DESTRUCTORS                            ---
REM -----------------------------------------------------------------------------------------------------------------------
Private Sub Class_Initialize()
 _Type = OBJCOMMANDBAR
 Set _This = Nothing
 Set _Parent = Nothing
 _Name = ""
 _ResourceURL = ""
 Set _Window = Nothing
 _Module = ""
 Set _Toolbar = Nothing
 _BarBuiltin = 0
 _BarType = -1
End Sub  ' Constructor

REM -----------------------------------------------------------------------------------------------------------------------
Private Sub Class_Terminate()
 On Local Error Resume Next
 Call Class_Initialize()
End Sub  ' Destructor

REM -----------------------------------------------------------------------------------------------------------------------
Public Sub Dispose()
 Call Class_Terminate()
End Sub  ' Explicit destructor

REM -----------------------------------------------------------------------------------------------------------------------
REM --- CLASS GET/LET/SET PROPERTIES                           ---
REM -----------------------------------------------------------------------------------------------------------------------

REM -----------------------------------------------------------------------------------------------------------------------
Property Get BuiltIn() As Boolean
 BuiltIn = _PropertyGet("BuiltIn")
End Property  ' BuiltIn (get)

REM -----------------------------------------------------------------------------------------------------------------------
Property Get Name() As String
 Name = _PropertyGet("Name")
End Property  ' Name (get)

Public Function pName() As String  ' For compatibility with < V0.9.0
 pName = _PropertyGet("Name")
End Function  ' pName (get)

REM -----------------------------------------------------------------------------------------------------------------------
Property Get ObjectType() As String
 ObjectType = _PropertyGet("ObjectType")
End Property  ' ObjectType (get)

REM -----------------------------------------------------------------------------------------------------------------------
Public Function Parent() As Object
 Parent = _Parent
End Function  ' Parent (get) V6.4.0

REM -----------------------------------------------------------------------------------------------------------------------
Public Function Properties(ByVal Optional pvIndex As Variant) As Variant
' Return
'  a Collection object if pvIndex absent
'  a Property object otherwise

Dim vProperty As Variant, vPropertiesList() As Variant, sObject As String
 vPropertiesList = _PropertiesList()
 sObject = Utils._PCase(_Type)
 If IsMissing(pvIndex) Then
  vProperty = PropertiesGet._Properties(sObject, _This, vPropertiesList)
 Else
  vProperty = PropertiesGet._Properties(sObject, _This, vPropertiesList, pvIndex)
  vProperty._Value = _PropertyGet(vPropertiesList(pvIndex))
 End If
 
Exit_Function:
 Set Properties = vProperty
 Exit Function
End Function ' Properties

REM -----------------------------------------------------------------------------------------------------------------------
Property Get Visible() As Variant
 Visible = _PropertyGet("Visible")
End Property  ' Visible (get)

Property Let Visible(ByVal pvValue As Variant)
 Call _PropertySet("Visible", pvValue)
End Property  ' Visible (set)

REM -----------------------------------------------------------------------------------------------------------------------
REM --- CLASS METHODS                                ---
REM -----------------------------------------------------------------------------------------------------------------------

REM -----------------------------------------------------------------------------------------------------------------------
Public Function CommandBarControls(Optional ByVal pvIndex As Variant) As Variant
' Return an object of type CommandBarControl indicated by its index
' Index is different from UNO index: separators do not count
' If no pvIndex argument, return a Collection type

 If _ErrorHandler() Then On Local Error Goto Error_Function
Const cstThisSub = "CommandBar.CommandBarControls"
 Utils._SetCalledSub(cstThisSub)

Dim oLayout As Object, vElements() As Variant, iIndexToolbar As Integer, oToolbar As Object
Dim i As Integer, iItemsCount As Integer, oSettings As Object, vItem() As Variant, bSeparator As Boolean
Dim oObject As Object

 Set oObject = Nothing
 If Not IsMissing(pvIndex) Then
  If Not Utils._CheckArgument(pvIndex, 1, Utils._AddNumeric()) Then Goto Exit_Function
  If pvIndex < 0 Then Goto Trace_IndexError
 End If

 Select Case _BarType
  Case msoBarTypeNormal, msoBarTypeMenuBar
  Case Else : Goto Error_NotApplicable    ' Status bar not supported
 End Select

 Set oLayout = _Window.LayoutManager
 vElements = oLayout.getElements()
 iIndexToolbar = _FindElement(vElements())
 If iIndexToolbar < 0 Then Goto Error_NotApplicable   ' Toolbar not visible
 Set oToolbar = vElements(iIndexToolbar)

 iItemsCount = 0
 Set oSettings = oToolbar.getSettings(False)

 bSeparator = False 
 For i = 0 To oSettings.getCount() - 1
  Set vItem() = oSettings.getByIndex(i)
  If _GetPropertyValue(vItem, "Type", 1) <> 1 Then  ' Type = 1 indicates separator
   iItemsCount = iItemsCount + 1
   If Not IsMissing(pvIndex) Then
    If pvIndex = iItemsCount - 1 Then
     Set oObject = New CommandBarControl
     With oObject
      Set ._This = oObject
      Set ._Parent = _This
      ._ParentCommandBarName = _Name
      ._ParentCommandBar = oToolbar
      ._ParentBuiltin = ( _BarBuiltin = 1 )
      ._Element = vItem()
      ._InternalIndex = i
      ._Index = iItemsCount     ' Indexes start at 1
      ._BeginGroup = bSeparator
     End With
    End If
    bSeparator = False
   End If
  Else
   bSeparator = True
  End If
 Next i

 If IsNull(oObject) Then
  Select Case True
   Case IsMissing(pvIndex)
    Set oObject = New Collect
    Set oObject._This = oObject
    oObject._CollType = COLLCOMMANDBARCONTROLS
    Set oObject._Parent = _This
    oObject._Count = iItemsCount
   Case Else  ' pvIndex is numeric
    Goto Trace_IndexError
  End Select
 End If

Exit_Function:
 Set CommandBarControls = oObject
 Set oObject = Nothing
 Utils._ResetCalledSub(cstThisSub)
 Exit Function
Error_Function:
 TraceError(TRACEABORT, Err, cstThisSub, Erl)
 GoTo Exit_Function
Trace_IndexError:
 TraceError(TRACEFATAL, ERRCOLLECTION, Utils._CalledSub(), 0)
 Goto Exit_Function
Error_NotApplicable:
 TraceError(TRACEFATAL, ERRMETHOD, Utils._CalledSub(), 0, 1, cstThisSub)
 Goto Exit_Function
End Function ' CommandBarControls  V1,3,0

REM -----------------------------------------------------------------------------------------------------------------------
Public Function Controls(Optional ByVal pvIndex As Variant) As Variant
' Alias for CommandBarControls (VBA)

 If _ErrorHandler() Then On Local Error Goto Error_Function
Const cstThisSub = "CommandBar.Controls"
 Utils._SetCalledSub(cstThisSub)

Dim oObject As Object

 If IsMissing(pvIndex) Then Set oObject = CommandBarControls() Else Set oObject = CommandBarControls(pvIndex)

Exit_Function:
 Set Controls = oObject
 Set oObject = Nothing
 Utils._ResetCalledSub(cstThisSub)
 Exit Function
Error_Function:
 TraceError(TRACEABORT, Err, cstThisSub, Erl)
 GoTo Exit_Function
End Function ' Controls  V1,3,0

REM -----------------------------------------------------------------------------------------------------------------------
Public Function getProperty(Optional ByVal pvProperty As Variant) As Variant
' Return property value of psProperty property name

 Utils._SetCalledSub("CommandBar.getProperty")
 If IsMissing(pvProperty) Then Call _TraceArguments()
 getProperty = _PropertyGet(pvProperty)
 Utils._ResetCalledSub("CommandBar.getProperty")
 
End Function  ' getProperty

REM -----------------------------------------------------------------------------------------------------------------------
Public Function hasProperty(ByVal Optional pvProperty As Variant) As Boolean
' Return True if object has a valid property called pvProperty (case-insensitive comparison !)

 If IsMissing(pvProperty) Then hasProperty = PropertiesGet._hasProperty(_Type, _PropertiesList()) Else hasProperty = PropertiesGet._hasProperty(_Type, _PropertiesList(), pvProperty)
 Exit Function
 
End Function ' hasProperty

REM -----------------------------------------------------------------------------------------------------------------------
Public Function Reset() As Boolean
' Reset a whole command bar to its initial values

 If _ErrorHandler() Then On Local Error Goto Error_Function
Const cstThisSub = "CommandBar.Reset"
 Utils._SetCalledSub(cstThisSub)

 _Toolbar.reload()

Exit_Function:
 Reset = True
 Utils._ResetCalledSub(cstThisSub)
 Exit Function
Error_Function:
 TraceError(TRACEABORT, Err, cstThisSub, Erl)
 Reset = False
 GoTo Exit_Function
End Function ' Reset V1.3.0

REM -----------------------------------------------------------------------------------------------------------------------
REM --- PRIVATE FUNCTIONS                               ---
REM -----------------------------------------------------------------------------------------------------------------------

REM -----------------------------------------------------------------------------------------------------------------------
Private Function _FindElement(pvElements As Variant) As Integer
' Return -1 if not found, otherwise return index in elements table of LayoutManager

Dim i As Integer

 _FindElement = -1
 If Not IsArray(pvElements) Then Exit Function

 For i = 0 To UBound(pvElements)
  If _ResourceURL = pvElements(i).ResourceURL Then
   _FindElement = i
   Exit Function
  End If
 Next i

End Function

REM -----------------------------------------------------------------------------------------------------------------------
Private Function _PropertiesList() As Variant
  _PropertiesList = Array("BuiltIn", "Name", "ObjectType", "Visible")
End Function ' _PropertiesList

REM -----------------------------------------------------------------------------------------------------------------------
Private Function _PropertyGet(ByVal psProperty As String) As Variant
' Return property value of the psProperty property name

 If _ErrorHandler() Then On Local Error Goto Error_Function
Dim cstThisSub As String
 cstThisSub = "CommandBar.get" & psProperty
 Utils._SetCalledSub(cstThisSub)
 _PropertyGet = Nothing

Dim oLayout As Object, iElementIndex As Integer
 
 Select Case UCase(psProperty)
  Case UCase("BuiltIn")
   _PropertyGet = ( _BarBuiltin = 1 )
  Case UCase("Name")
   _PropertyGet = _Name
  Case UCase("ObjectType")
   _PropertyGet = _Type
  Case UCase("Visible")
   Set oLayout = _Window.LayoutManager
   iElementIndex = _FindElement(oLayout.getElements())
   If iElementIndex < 0 Then _PropertyGet = False Else _PropertyGet = oLayout.isElementVisible(_ResourceURL)
  Case Else
   Goto Trace_Error
 End Select
 
Exit_Function:
 Utils._ResetCalledSub(cstThisSub)
 Exit Function
Trace_Error:
 TraceError(TRACEFATAL, ERRPROPERTY, Utils._CalledSub(), 0, 1, psProperty)
 _PropertyGet = Nothing
 Goto Exit_Function
Error_Function:
 TraceError(TRACEABORT, Err, Utils._CalledSub(), Erl)
 _PropertyGet = Nothing
 GoTo Exit_Function
End Function  ' _PropertyGet

REM -----------------------------------------------------------------------------------------------------------------------
Private Function _PropertySet(ByVal psProperty As String, ByVal pvValue As Variant) As Boolean
' Return True if property setting OK

 If _ErrorHandler() Then On Local Error Goto Error_Function
Dim cstThisSub As String
 cstThisSub = "CommandBar.set" & psProperty
 Utils._SetCalledSub(cstThisSub)
 _PropertySet = True
Dim iArgNr As Integer
Dim oLayout As Object, iElementIndex As Integer


 Select Case UCase(_A2B_.CalledSub)
  Case UCase("setProperty")    : iArgNr = 3
  Case UCase("CommandBar.setProperty") : iArgNr = 2
  Case UCase(cstThisSub)     : iArgNr = 1
 End Select
 
 If Not hasProperty(psProperty) Then Goto Trace_Error

 Select Case UCase(psProperty)
  Case UCase("Visible")
   If Not Utils._CheckArgument(pvValue, iArgNr, vbBoolean, , False) Then Goto Trace_Error_Value
   Set oLayout = _Window.LayoutManager
   With oLayout
    iElementIndex = _FindElement(.getElements())
    If iElementIndex < 0 Then
     If pvValue Then
      .createElement(_ResourceURL)
      .showElement(_ResourceURL)
     End If
    Else
     If pvValue <> .isElementVisible(_ResourceURL) Then
      If pvValue Then .showElement(_ResourceURL) Else .hideElement(_ResourceURL)
     End If
    End If
   End With
  Case Else
   Goto Trace_Error
 End Select
 
Exit_Function:
 Utils._ResetCalledSub(cstThisSub)
 Exit Function
Trace_Error:
 TraceError(TRACEFATAL, ERRPROPERTY, Utils._CalledSub(), 0, , psProperty)
 _PropertySet = False
 Goto Exit_Function
Trace_Error_Value:
 TraceError(TRACEFATAL, ERRPROPERTYVALUE, Utils._CalledSub(), 0, 1, Array(pvValue, psProperty))
 _PropertySet = False
 Goto Exit_Function
Error_Function:
 TraceError(TRACEABORT, Err, cstThisSub, Erl)
 _PropertySet = False
 GoTo Exit_Function
End Function   ' _PropertySet

</script:module>

[ Dauer der Verarbeitung: 0.46 Sekunden  ]