1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129 |
- <?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="Form" 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 FORM
- Private _This As Object ' Workaround for absence of This builtin function
- Private _Parent As Object
- Private _Shortcut As String
- Private _Name As String
- Private _DocEntry As Integer ' Doc- and DbContainer entries in Root structure
- Private _DbEntry As Integer
- Private _MainForms As Variant
- Private _PersistentName As String
- Private _IsLoaded As Boolean
- Private _OpenArgs As Variant
- Private _OrderBy As String
- Public Component As Object ' com.sun.star.text.TextDocument
- Public ContainerWindow As Object ' (No name)
- Public FormsCollection As Object ' com.sun.star.form.OFormsCollection
- Public DatabaseForm As Object ' com.sun.star.form.component.DataForm and com.sun.star.sdb.ResultSet (a.o.)
- REM -----------------------------------------------------------------------------------------------------------------------
- REM --- CONSTRUCTORS / DESTRUCTORS ---
- REM -----------------------------------------------------------------------------------------------------------------------
- Private Sub Class_Initialize()
- _Type = OBJFORM
- Set _This = Nothing
- Set _Parent = Nothing
- _Shortcut = ""
- _Name = ""
- _DocEntry = -1
- _DbEntry = -1
- _MainForms = Array()
- _PersistentName = ""
- _IsLoaded = False
- _OpenArgs = ""
- _OrderBy = ""
- Set Component = Nothing
- Set ContainerWindow = Nothing
- Set FormsCollection = Nothing
- Set DatabaseForm = Nothing
- End Sub ' Constructor
- REM -----------------------------------------------------------------------------------------------------------------------
- Private Sub Class_Terminate()
- On Local Error Resume Next
- Call Class_Initialize()
- End Sub ' Destructor
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Sub Dispose()
- Dim ofForm As Object
- If Not IsLoaded(True) Then
- If Not IsNull(DatabaseForm) Then DatabaseForm.Dispose()
- End If
- Call Class_Terminate()
- End Sub ' Explicit destructor
- REM -----------------------------------------------------------------------------------------------------------------------
- REM --- CLASS GET/LET/SET PROPERTIES ---
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get AllowAdditions() As Variant
- AllowAdditions = _PropertyGet("AllowAdditions")
- End Property ' AllowAdditions (get)
- Property Let AllowAdditions(ByVal pvValue As Variant)
- Call _PropertySet("AllowAdditions", pvValue)
- End Property ' AllowAdditions (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get AllowDeletions() As Variant
- AllowDeletions = _PropertyGet("AllowDeletions")
- End Property ' AllowDeletions (get)
- Property Let AllowDeletions(ByVal pvValue As Variant)
- Call _PropertySet("AllowDeletions", pvValue)
- End Property ' AllowDeletions (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get AllowEdits() As Variant
- AllowEdits = _PropertyGet("AllowEdits")
- End Property ' AllowEdits (get)
- Property Let AllowEdits(ByVal pvValue As Variant)
- Call _PropertySet("AllowEdits", pvValue)
- End Property ' AllowEdits (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get Bookmark() As Variant
- Bookmark = _PropertyGet("Bookmark")
- End Property ' Bookmark (get)
- Property Let Bookmark(ByVal pvValue As Variant)
- Call _PropertySet("Bookmark", pvValue)
- End Property ' Bookmark (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get Caption() As Variant
- Caption = _PropertyGet("Caption")
- End Property ' Caption (get)
- Property Let Caption(ByVal pvValue As Variant)
- Call _PropertySet("Caption", pvValue)
- End Property ' Caption (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get CurrentRecord() As Variant
- CurrentRecord = _PropertyGet("CurrentRecord")
- End Property ' CurrentRecord (get)
- Property Let CurrentRecord(ByVal pvValue As Variant)
- Call _PropertySet("CurrentRecord", pvValue)
- End Property ' CurrentRecord (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get Filter() As Variant
- Filter = _PropertyGet("Filter")
- End Property ' Filter (get)
- Property Let Filter(ByVal pvValue As Variant)
- Call _PropertySet("Filter", pvValue)
- End Property ' Filter (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get FilterOn() As Variant
- FilterOn = _PropertyGet("FilterOn")
- End Property ' FilterOn (get)
- Property Let FilterOn(ByVal pvValue As Variant)
- Call _PropertySet("FilterOn", pvValue)
- End Property ' FilterOn (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get Height() As Variant
- Height = _PropertyGet("Height")
- End Property ' Height (get)
- Property Let Height(ByVal pvValue As Variant)
- Call _PropertySet("Height", pvValue)
- End Property ' Height (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Function IsLoaded(ByVal Optional pbForce As Boolean) As Boolean
- 'Return True if form open
- 'pbForce = True forbids bypass on value of _IsLoaded
- If _ErrorHandler() Then On Local Error Goto Error_Function
- Utils._SetCalledSub("Form.getIsLoaded")
- If IsMissing(pbForce) Then pbForce = False
- If ( Not pbForce ) And _IsLoaded Then ' For performance reasons, a form object, once detected as loaded, is presumed remaining loaded. Except if pbForce = True
- IsLoaded = True
- Goto Exit_Function
- End If
- IsLoaded = False
-
- Dim oDoc As Object, oDatabase As Object, oEnum As Object, oDesk As Object, oComp As Object, vPersistent As Variant
- Dim i As Integer
- Set oDoc = _A2B_.CurrentDocument()
- Select Case oDoc.DbConnect
- Case DBCONNECTBASE
- Set oDesk = CreateUnoService("com.sun.star.frame.Desktop")
- Set oEnum = oDesk.Components().createEnumeration
- Do While oEnum.hasMoreElements ' Search in all open components if one corresponds with current form
- oComp = oEnum.nextElement
- If _hasUNOProperty(oComp, "Identifier") Then
- If oComp.Identifier = "com.sun.star.sdb.FormDesign" Then
- vPersistent = Split(oComp.StringValue, "/")
- If vPersistent(UBound(vPersistent) - 1) = _PersistentName Then
- _IsLoaded = True
- Set Component = oComp
- Exit Do
- End If
- End If
- End If
- Loop
- Case DBCONNECTFORM
- Set Component = oDoc.Document ' Form
- _IsLoaded = True ' Interactive form always loaded by design
- End Select
- Set oComp = Nothing
- IsLoaded = _IsLoaded
- Exit_Function:
- Utils._ResetCalledSub("Form.getIsLoaded")
- Exit Function
- Error_Function:
- TraceError(TRACEABORT, Err, "Form.getIsLoaded", Erl)
- GoTo Exit_Function
- End Function ' IsLoaded V1.1.0
- 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 -----------------------------------------------------------------------------------------------------------------------
- Property Get OnApproveCursorMove() As Variant
- OnApproveCursorMove = _PropertyGet("OnApproveCursorMove")
- End Property ' OnApproveCursorMove (get)
- Property Let OnApproveCursorMove(ByVal pvValue As Variant)
- Call _PropertySet("OnApproveCursorMove", pvValue)
- End Property ' OnApproveCursorMove (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnApproveParameter() As Variant
- OnApproveParameter = _PropertyGet("OnApproveParameter")
- End Property ' OnApproveParameter (get)
- Property Let OnApproveParameter(ByVal pvValue As Variant)
- Call _PropertySet("OnApproveParameter", pvValue)
- End Property ' OnApproveParameter (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnApproveReset() As Variant
- OnApproveReset = _PropertyGet("OnApproveReset")
- End Property ' OnApproveReset (get)
- Property Let OnApproveReset(ByVal pvValue As Variant)
- Call _PropertySet("OnApproveReset", pvValue)
- End Property ' OnApproveReset (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnApproveRowChange() As Variant
- OnApproveRowChange = _PropertyGet("OnApproveRowChange")
- End Property ' OnApproveRowChange (get)
- Property Let OnApproveRowChange(ByVal pvValue As Variant)
- Call _PropertySet("OnApproveRowChange", pvValue)
- End Property ' OnApproveRowChange (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnApproveSubmit() As Variant
- OnApproveSubmit = _PropertyGet("OnApproveSubmit")
- End Property ' OnApproveSubmit (get)
- Property Let OnApproveSubmit(ByVal pvValue As Variant)
- Call _PropertySet("OnApproveSubmit", pvValue)
- End Property ' OnApproveSubmit (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnConfirmDelete() As Variant
- OnConfirmDelete = _PropertyGet("OnConfirmDelete")
- End Property ' OnConfirmDelete (get)
- Property Let OnConfirmDelete(ByVal pvValue As Variant)
- Call _PropertySet("OnConfirmDelete", pvValue)
- End Property ' OnConfirmDelete (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnCursorMoved() As Variant
- OnCursorMoved = _PropertyGet("OnCursorMoved")
- End Property ' OnCursorMoved (get)
- Property Let OnCursorMoved(ByVal pvValue As Variant)
- Call _PropertySet("OnCursorMoved", pvValue)
- End Property ' OnCursorMoved (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnErrorOccurred() As Variant
- OnErrorOccurred = _PropertyGet("OnErrorOccurred")
- End Property ' OnErrorOccurred (get)
- Property Let OnErrorOccurred(ByVal pvValue As Variant)
- Call _PropertySet("OnErrorOccurred", pvValue)
- End Property ' OnErrorOccurred (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnLoaded() As Variant
- OnLoaded = _PropertyGet("OnLoaded")
- End Property ' OnLoaded (get)
- Property Let OnLoaded(ByVal pvValue As Variant)
- Call _PropertySet("OnLoaded", pvValue)
- End Property ' OnLoaded (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnReloaded() As Variant
- OnReloaded = _PropertyGet("OnReloaded")
- End Property ' OnReloaded (get)
- Property Let OnReloaded(ByVal pvValue As Variant)
- Call _PropertySet("OnReloaded", pvValue)
- End Property ' OnReloaded (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnReloading() As Variant
- OnReloading = _PropertyGet("OnReloading")
- End Property ' OnReloading (get)
- Property Let OnReloading(ByVal pvValue As Variant)
- Call _PropertySet("OnReloading", pvValue)
- End Property ' OnReloading (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnResetted() As Variant
- OnResetted = _PropertyGet("OnResetted")
- End Property ' OnResetted (get)
- Property Let OnResetted(ByVal pvValue As Variant)
- Call _PropertySet("OnResetted", pvValue)
- End Property ' OnResetted (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnRowChanged() As Variant
- OnRowChanged = _PropertyGet("OnRowChanged")
- End Property ' OnRowChanged (get)
- Property Let OnRowChanged(ByVal pvValue As Variant)
- Call _PropertySet("OnRowChanged", pvValue)
- End Property ' OnRowChanged (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnUnloaded() As Variant
- OnUnloaded = _PropertyGet("OnUnloaded")
- End Property ' OnUnloaded (get)
- Property Let OnUnloaded(ByVal pvValue As Variant)
- Call _PropertySet("OnUnloaded", pvValue)
- End Property ' OnUnloaded (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnUnloading() As Variant
- OnUnloading = _PropertyGet("OnUnloading")
- End Property ' OnUnloading (get)
- Property Let OnUnloading(ByVal pvValue As Variant)
- Call _PropertySet("OnUnloading", pvValue)
- End Property ' OnUnloading (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OpenArgs() As Variant
- OpenArgs = _PropertyGet("OpenArgs")
- End Property ' OpenArgs (get)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OrderBy() As Variant
- OrderBy = _PropertyGet("OrderBy")
- End Property ' OrderBy (get) V1.2.0
- Property Let OrderBy(ByVal pvValue As Variant)
- Call _PropertySet("OrderBy", pvValue)
- End Property ' OrderBy (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OrderByOn() As Variant
- OrderByOn = _PropertyGet("OrderByOn")
- End Property ' OrderByOn (get) V1.2.0
- Property Let OrderByOn(ByVal pvValue As Variant)
- Call _PropertySet("OrderByOn", pvValue)
- End Property ' OrderByOn (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Function OptionGroup(ByVal Optional pvGroupName As Variant) As Variant
- ' Return either an error or an object of type OPTIONGROUP based on its name
- Const cstThisSub = "Form.OptionGroup"
- Dim ogGroup As Object
- Utils._SetCalledSub(cstThisSub)
- If IsMissing(pvGroupName) Then Call _TraceArguments()
- If _ErrorHandler() Then On Local Error Goto Error_Function
-
- Set ogGroup = _OptionGroup(pvGroupName, CTLPARENTISFORM, Component, FormsCollection)
- If Not IsNull(ogGroup) Then
- ogGroup._DocEntry = _DocEntry
- ogGroup._DbEntry = _DbEntry
- End If
- Set OptionGroup = ogGroup
-
- Exit_Function:
- Utils._ResetCalledSub(cstThisSub)
- Exit Function
- Error_Function:
- TraceError(TRACEABORT, Err, Form.OptionGroup, Erl)
- GoTo Exit_Function
- End Function ' OptionGroup V1.1.0
- 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 Recordset() As Object
- Recordset = _PropertyGet("Recordset")
- End Property ' Recordset (get) V0.9.5
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get RecordSource() As Variant
- RecordSource = _PropertyGet("RecordSource")
- End Property ' RecordSource (get)
- Property Let RecordSource(ByVal pvValue As Variant)
- Call _PropertySet("RecordSource", pvValue)
- End Property ' RecordSource (set)
- 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 -----------------------------------------------------------------------------------------------------------------------
- Property Get Width() As Variant
- Width = _PropertyGet("Width")
- End Property ' Width (get)
- Property Let Width(ByVal pvValue As Variant)
- Call _PropertySet("Width", pvValue)
- End Property ' Width (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- REM --- CLASS METHODS ---
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Function mClose() As Variant
- ' Close the form
- If _ErrorHandler() Then On Local Error Goto Error_Function
- Utils._SetCalledSub("Form.Close")
- mClose = False
- Dim oDatabase As Object, oController As Object
- Set oDatabase = Application._CurrentDb()
- If oDatabase._DbConnect <> DBCONNECTBASE Then Goto Error_NotApplicable
- Set oController = oDatabase.Document.getFormDocuments.getByHierarchicalName(_Name)
- oController.close()
- Dispose()
- mClose = True
- Exit_Function:
- Utils._ResetCalledSub("Form.Close")
- Exit Function
- Error_NotApplicable:
- TraceError(TRACEFATAL, ERRMETHOD, Utils._CalledSub(), 0, 1, cstThisSub)
- Goto Exit_Function
- Error_Function:
- TraceError(TRACEABORT, Err, "Form.Close", Erl)
- GoTo Exit_Function
- End Function ' Close
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Function Controls(Optional ByVal pvIndex As Variant) As Variant
- ' Return a Control object with name or index = pvIndex
- If _ErrorHandler() Then On Local Error Goto Error_Function
- Utils._SetCalledSub("Form.Controls")
- Dim ocControl As Variant, iControlCount As Integer
- Dim oCounter As Variant, sControls() As Variant, i As Integer, bFound As Boolean, sIndex As String
- Dim j As Integer, iCount As Integer, sName As String, iAddCount As Integer
- Dim oDatabaseForm As Object, iCtlCount As Integer
- Set ocControl = Nothing
- If Not IsLoaded Then Goto Trace_Error_NotOpen
- 'Count number of controls thru the forms collection
- iControlCount = 0
- iCount = FormsCollection.Count
- For i = 0 To iCount - 1
- If i = 0 Then Set oDatabaseForm = DatabaseForm Else Set oDatabaseForm = FormsCollection.getByIndex(i)
- If Not IsNull(oDatabaseForm) Then iControlCount = iControlCount + oDatabaseForm.getCount()
- Next i
-
- If IsMissing(pvIndex) Then ' No argument, return Collection pseudo-object
- Set oCounter = New Collect
- Set oCounter._This = oCounter
- oCounter._CollType = COLLCONTROLS
- Set oCounter._Parent = _This
- oCounter._Count = iControlCount
- Set Controls = oCounter
- Goto Exit_Function
- End If
-
- If Not Utils._CheckArgument(pvIndex, 1, Utils._AddNumeric(vbString)) Then Goto Exit_Function
-
- ' Start building the ocControl object
- ' Determine exact name
- sName = ""
- Select Case VarType(pvIndex)
- Case vbInteger, vbLong, vbSingle, vbDouble, vbCurrency, vbBigint, vbDecimal
- If pvIndex < 0 Or pvIndex > iControlCount - 1 Then Goto Trace_Error_Index
- iAddCount = 0
- For i = 0 To iCount - 1
- If i = 0 Then Set oDatabaseForm = DatabaseForm Else Set oDatabaseForm = FormsCollection.getByIndex(i)
- If Not IsNull(oDatabaseForm) Then
- iCtlCount = oDatabaseForm.getCount()
- If pvIndex >= iAddCount And pvIndex <= iAddcount + iCtlCount - 1 Then
- sName = oDatabaseForm.ElementNames(pvIndex - iAddCount)
- Exit For
- End If
- iAddCount = iAddcount +iCtlCount
- End If
- Next i
- Case vbString ' Check control name validity (non case sensitive)
- sIndex = UCase(Utils._Trim(pvIndex))
- bFound = False
- For i = 0 To iCount - 1
- If i = 0 Then Set oDatabaseForm = DatabaseForm Else Set oDatabaseForm = FormsCollection.getByIndex(i)
- If Not IsNull(oDatabaseForm) Then
- sControls() = oDatabaseForm.getElementNames()
- For j = 0 To UBound(sControls)
- If UCase(sControls(j)) = sIndex Then
- sName = sControls(j)
- bFound = True
- Exit For
- End If
- Next j
- If bFound Then Exit For
- End If
- Next i
- If Not bFound Then Goto Trace_NotFound
- End Select
- 'Initialize a new Control object
- Set ocControl = New Control
- With ocControl
- Set ._This = ocControl
- Set ._Parent = _This
- ._ParentType = CTLPARENTISFORM
- ._Name = sName
- ._Shortcut = _Shortcut & "!" & Utils._Surround(sName)
- If IsNull(oDatabaseForm) Then ._MainForm = "" Else ._MainForm = oDatabaseForm.Name
- Set .ControlModel = oDatabaseForm.getByName(sName)
- ._ImplementationName = .ControlModel.getImplementationName()
- ._FormComponent = Component
- If Utils._hasUNOProperty(.ControlModel, "ClassId") Then ._ClassId = .ControlModel.ClassId
- If ._ClassId > 0 And ._ClassId <> acHiddenControl Then
- Set .ControlView = Component.CurrentController.getControl(.ControlModel)
- End If
- ._Initialize()
- ._DocEntry = _DocEntry
- ._DbEntry = _DbEntry
- End With
- Set Controls = ocControl
-
- Exit_Function:
- Utils._ResetCalledSub("Form.Controls")
- Exit Function
- Trace_Error_NotOpen:
- TraceError(TRACEFATAL, ERRFORMNOTOPEN, Utils._CalledSub(), 0, , _Name)
- Set Controls = Nothing
- Goto Exit_Function
- Trace_Error_Index:
- TraceError(TRACEFATAL, ERRCOLLECTION, Utils._CalledSub(), 0, 1)
- Set Controls = Nothing
- Goto Exit_Function
- Trace_NotFound:
- TraceError(TRACEFATAL, ERRCONTROLNOTFOUND, Utils._CalledSub(), 0, , Array(pvIndex, pvIndex))
- Set Controls = Nothing
- Goto Exit_Function
- Error_Function:
- TraceError(TRACEABORT, Err, "Form.Controls", Erl)
- Set Controls = Nothing
- GoTo Exit_Function
- End Function ' Controls
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Function CurrentDb() As Object
- ' Returns Database object related to current form
- Const cstThisSub = "Form.CurrentDb"
- Utils._SetCalledSub(cstThisSub)
- Set CurrentDb = Application._CurrentDb(_DocEntry, _DbEntry)
- Exit_Function:
- Utils._ResetCalledSub(cstThisSub)
- Exit Function
- End Function ' CurrentDb V1.1.0
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Function getProperty(Optional ByVal pvProperty As Variant) As Variant
- ' Return property value of psProperty property name
- Utils._SetCalledSub("Form.getProperty")
- If IsMissing(pvProperty) Then Call _TraceArguments()
- getProperty = _PropertyGet(pvProperty)
- Utils._ResetCalledSub("Form.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 Move( ByVal Optional pvLeft As Variant _
- , ByVal Optional pvTop As Variant _
- , ByVal Optional pvWidth As Variant _
- , ByVal Optional pvHeight As Variant _
- ) As Variant
- ' Execute Move method
- Utils._SetCalledSub("Form.Move")
- If _ErrorHandler() Then On Local Error Goto Error_Function
- Move = False
- Dim iArgNr As Integer
- Select Case UCase(_A2B_.CalledSub)
- Case UCase("Move") : iArgNr = 1
- Case UCase("Form.Move") : iArgNr = 0
- End Select
- If IsMissing(pvLeft) Then pvLeft = -1
- If IsMissing(pvTop) Then pvTop = -1
- If IsMissing(pvWidth) Then pvWidth = -1
- If IsMissing(pvHeight) Then pvHeight = -1
- If Not Utils._CheckArgument(pvLeft, iArgNr + 1, Utils._AddNumeric()) Then Goto Exit_Function
- If Not Utils._CheckArgument(pvTop, iArgNr + 2, Utils._AddNumeric()) Then Goto Exit_Function
- If Not Utils._CheckArgument(pvWidth, iArgNr + 3, Utils._AddNumeric()) Then Goto Exit_Function
- If Not Utils._CheckArgument(pvHeight, iArgNr + 4, Utils._AddNumeric()) Then Goto Exit_Function
-
- Dim iArg As Integer, iWrong As Integer ' Check arguments values
- iArg = 0
- If pvHeight < -1 Then
- iArg = 4 : iWrong = pvHeight
- ElseIf pvWidth < -1 Then
- iArg = 3 : iWrong = pvWidth
- ElseIf pvTop < -1 Then
- iArg = 2 : iWrong = pvTop
- ElseIf pvLeft < -1 Then
- iArg = 1 : iWrong = pvLeft
- End If
- If iArg > 0 Then
- TraceError(TRACEFATAL, ERRWRONGARGUMENT, Utils._CalledSub(), 0, 1, Array(iArgNr + iArg, iWrong))
- Goto Exit_Function
- End If
-
- Dim iPosSize As Integer
- iPosSize = 0
- If pvLeft >= 0 Then iPosSize = iPosSize + com.sun.star.awt.PosSize.X
- If pvTop >= 0 Then iPosSize = iPosSize + com.sun.star.awt.PosSize.Y
- If pvWidth > 0 Then iPosSize = iPosSize + com.sun.star.awt.PosSize.WIDTH
- If pvHeight > 0 Then iPosSize = iPosSize + com.sun.star.awt.PosSize.HEIGHT
- If iPosSize > 0 Then
- If Utils._hasUNOProperty(ContainerWindow, "IsMaximized") Then ' Ignored when <= OO3.2
- ContainerWindow.IsMaximized = False
- ContainerWindow.IsMinimized = False
- End If
- ContainerWindow.setPosSize(pvLeft, pvTop, pvWidth, pvHeight, iPosSize)
- End If
- Move = True
-
- Exit_Function:
- Utils._ResetCalledSub("Form.Move")
- Exit Function
- Error_Function:
- TraceError(TRACEABORT, Err, "Form.Move", Erl)
- GoTo Exit_Function
- End Function ' Move
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Function Refresh() As Boolean
- ' Refresh data with its most recent value in the database in a form or subform
- Utils._SetCalledSub("Form.Refresh")
- If _ErrorHandler() Then On Local Error Goto Error_Function
- Refresh = False
- Dim oSet As Object
- Set oSet = DatabaseForm.createResultSet()
- If Not IsNull(oSet) Then
- oSet.refreshRow()
- Refresh = True
- End If
- Exit_Function:
- Set oSet = Nothing
- Utils._ResetCalledSub("Form.Refresh")
- Exit Function
- Error_Function:
- TraceError(TRACEABORT, Err, "SubForm.Refresh", Erl)
- GoTo Exit_Function
- End Function ' Refresh
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Function Requery() As Boolean
- ' Refresh data displayed in a form, subform, combobox or listbox
- Utils._SetCalledSub("Form.Requery")
- If _ErrorHandler() Then On Local Error Goto Error_Function
- Requery = False
- DatabaseForm.reload()
- Requery = True
- Exit_Function:
- Utils._ResetCalledSub("Form.Requery")
- Exit Function
- Error_Function:
- TraceError(TRACEABORT, Err, "Form.Requery", Erl)
- GoTo Exit_Function
- End Function ' Requery
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Function setFocus() As Boolean
- ' Execute setFocus method
- Const cstThisSub = "Form.setFocus"
- Utils._SetCalledSub(cstThisSub)
- If _ErrorHandler() Then On Local Error Goto Error_Function
- setFocus = False
- With ContainerWindow
- If .isVisible() = False Then .setVisible(True)
- .IsMinimized = False
- .setFocus()
- .setEnable(True) ' Added to try to bypass desynchro issue in Linux
- .toFront() ' Added to force window change in Linux
- End With
- setFocus = True
-
- Exit_Function:
- Utils._ResetCalledSub(cstThisSub)
- Exit Function
- Error_Function:
- TraceError(TRACEABORT, Err, cstThisSub, Erl)
- Goto Exit_Function
- End Function ' setFocus V1.1.0
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Function setProperty(ByVal Optional psProperty As String, ByVal Optional pvValue As Variant) As Boolean
- ' Return True if property setting OK
- Utils._SetCalledSub("Form.setProperty")
- setProperty = _PropertySet(psProperty, pvValue)
- Utils._ResetCalledSub("Form.setProperty")
- End Function
- REM -----------------------------------------------------------------------------------------------------------------------
- REM --- PRIVATE FUNCTIONS ---
- REM -----------------------------------------------------------------------------------------------------------------------
- REM -----------------------------------------------------------------------------------------------------------------------
- Private Function _GetListener(ByVal psProperty As String) As String
- ' Return the X...Listener corresponding with the property in argument
- Select Case UCase(psProperty)
- Case UCase("OnApproveCursorMove")
- _GetListener = "XRowSetApproveListener"
- Case UCase("OnApproveParameter")
- _GetListener = "XDatabaseParameterListener"
- Case UCase("OnApproveReset"), UCase("OnResetted")
- _GetListener = "XResetListener"
- Case UCase("OnApproveRowChange")
- _GetListener = "XRowSetApproveListener"
- Case UCase("OnApproveSubmit")
- _GetListener = "XSubmitListener"
- Case UCase("OnConfirmDelete")
- _GetListener = "XConfirmDeleteListener"
- Case UCase("OnCursorMoved"), UCase("OnRowChanged")
- _GetListener = "XRowSetListener"
- Case UCase("OnErrorOccurred")
- _GetListener = "XSQLErrorListener"
- Case UCase("OnLoaded"), UCase("OnReloaded"), UCase("OnReloading"), UCase("OnUnloaded"), UCase("OnUnloading")
- _GetListener = "XLoadListener"
- End Select
-
- End Function ' _GetListener V1.7.0
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Sub _Initialize(psName As String)
- ' Set pointers to UNO objects
- Dim oDoc As Object, oDatabase As Object
- If _ErrorHandler() Then On Local Error Goto Trace_Error
- _Name = psName
- _Shortcut = "Forms!" & Utils._Surround(psName)
- Set oDoc = _A2B_.CurrentDocument()
- If oDoc.DbConnect = DBCONNECTBASE Then _PersistentName = oDoc.Document.getFormDocuments().getByHierarchicalName(psName).PersistentName
- If IsLoaded Then
- Select Case oDoc.DbConnect
- Case DBCONNECTBASE
- If Not IsNull(Component.CurrentController) Then ' A form opened then closed afterwards keeps a Component attribute
- Set ContainerWindow = Component.CurrentController.Frame.ContainerWindow
- Set FormsCollection = Component.getDrawPage.Forms
- If FormsCollection.Count = 0 Then
- Set DatabaseForm = Nothing
- Else
- 'Only first member of the collection can be reached with A2B
- 'Compliant with MSAccess which has 1 datasource by form, while LO might have many
- _MainForms = FormsCollection.ElementNames()
- Set DatabaseForm = FormsCollection.getByIndex(0)
- End If
- End If
- Case DBCONNECTFORM
- Set ContainerWindow = oDoc.Document.CurrentController.Frame.ContainerWindow
- Set FormsCollection = oDoc.Document.getDrawPage.Forms
- Set oDatabase = Application._CurrentDb(_DocEntry, _DbEntry)
- With oDatabase
- Set DatabaseForm = .Form
- If IsNull(.Connection) Then
- Set .Connection = DatabaseForm.ActiveConnection
- If Not IsNull(.Connection) Then
- Set .MetaData = .Connection.MetaData
- oDatabase._ReadOnly = .Connection.isReadOnly()
- End If
- End If
- End With
- End Select
- If IsNull(DatabaseForm) Then _OrderBy = "" Else _OrderBy = DatabaseForm.Order
- Else
- Set Component = Nothing
- Set ContainerWindow = Nothing
- Set DatabaseForm = Nothing
- End If
-
- Exit_Sub:
- Exit Sub
- Trace_Error:
- TraceError(TRACEABORT, Err, "Form.Initialize", Erl)
- Goto Exit_Sub
- Trace_Internal_Error:
- TraceError(TRACEABORT, ERRFORMNOTIDENTIFIED, Utils._CalledSub(), 0, , _Name)
- Goto Exit_Sub
- End Sub ' _Initialize V1.1.0
- REM -----------------------------------------------------------------------------------------------------------------------
- Private Function _PropertiesList() As Variant
- If _IsLoaded Then
- _PropertiesList = Array("AllowAdditions", "AllowDeletions", "AllowEdits", "Bookmark" _
- , "Caption", "CurrentRecord", "Filter", "FilterOn", "Height", "IsLoaded" _
- , "Name", "ObjectType", "OnApproveCursorMove", "OnApproveParameter" _
- , "OnApproveReset", "OnApproveRowChange", "OnApproveSubmit", "OnConfirmDelete" _
- , "OnCursorMoved", "OnErrorOccurred", "OnLoaded", "OnReloaded", "OnReloading" _
- , "OnResetted", "OnRowChanged", "OnUnloaded", "OnUnloading", "OpenArgs" _
- , "OrderBy", "OrderByOn", "RecordSource", "Visible", "Width" _
- ) ' Recordset removed
- Else
- _PropertiesList = Array("IsLoaded", "Name" _
- )
- End If
-
- 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
- Utils._SetCalledSub("Form.get" & psProperty)
-
- 'Execute
- Dim oDatabase As Object, vBookmark As Variant
- Dim i As Integer, oObject As Object
- _PropertyGet = EMPTY
- Select Case UCase(psProperty)
- Case UCase("Name"), UCase("IsLoaded")
- Case Else : If Not IsLoaded Then Goto Trace_Error_Form
- End Select
- Select Case UCase(psProperty)
- Case UCase("AllowAdditions")
- If IsNull(DatabaseForm) Then _PropertyGet = False Else _PropertyGet = DatabaseForm.AllowInserts
- Case UCase("AllowDeletions")
- If IsNull(DatabaseForm) Then _PropertyGet = False Else _PropertyGet = DatabaseForm.AllowDeletes
- Case UCase("AllowEdits")
- If IsNull(DatabaseForm) Then _PropertyGet = False Else _PropertyGet = DatabaseForm.AllowUpdates
- Case UCase("Bookmark")
- If IsNull(DatabaseForm) Then
- _PropertyGet = 0
- Else
- On Local Error Resume Next ' Disable error handler because bookmarking does not always react well in events ...
- If DatabaseForm.IsBookmarkable Then vBookmark = DatabaseForm.getBookmark() Else vBookmark = Nothing
- If _ErrorHandler() Then On Local Error Goto Error_Function Else On Local Error Goto 0
- If IsNull(vBookmark) Then Goto Trace_Error
- _PropertyGet = vBookmark
- End If
- Case UCase("Caption")
- Set odatabase = Application._CurrentDb(_DocEntry, _DbEntry)
- Select Case oDatabase._DbConnect
- Case DBCONNECTFORM : _PropertyGet = oDatabase.Document.CurrentController.Frame.Title
- Case DBCONNECTBASE : _PropertyGet = Component.CurrentController.Frame.Title
- End Select
- Case UCase("CurrentRecord")
- If IsNull(DatabaseForm) Then _PropertyGet = 0 Else _PropertyGet = DatabaseForm.Row
- Case UCase("Filter")
- If IsNull(DatabaseForm) Then _PropertyGet = "" Else _PropertyGet = DatabaseForm.Filter
- Case UCase("FilterOn")
- If IsNull(DatabaseForm) Then _PropertyGet = False Else _PropertyGet = DatabaseForm.ApplyFilter
- Case UCase("Height")
- _PropertyGet = ContainerWindow.getPosSize().Height
- Case UCase("IsLoaded") ' Only for indirect access from property object
- _PropertyGet = IsLoaded
- Case UCase("Name")
- _PropertyGet = _Name
- Case UCase("ObjectType")
- _PropertyGet = _Type
- Case UCase("OnApproveCursorMove"), UCase("OnApproveParameter"), UCase("OnApproveReset"), UCase("OnApproveRowChange") _
- , UCase("OnApproveSubmit"), UCase("OnConfirmDelete"), UCase("OnCursorMoved"), UCase("OnErrorOccurred") _
- , UCase("OnLoaded"), UCase("OnReloaded"), UCase("OnReloading"), UCase("OnResetted"), UCase("OnRowChanged") _
- , UCase("OnUnloaded"), UCase("OnUnloading")
- If IsNull(DatabaseForm) Then _PropertyGet = "" Else _PropertyGet = Utils._GetEventScriptCode(DatabaseForm, psProperty, _Name, True)
- Case UCase("OpenArgs")
- _PropertyGet = _OpenArgs
- Case UCase("OrderBy")
- _PropertyGet = _OrderBy
- Case UCase("OrderByOn")
- If IsNull(DatabaseForm) Then _PropertyGet = False Else _PropertyGet = ( DatabaseForm.Order <> "" )
- Case UCase("Recordset")
- If IsNull(DatabaseForm) Then Goto Trace_Error
- If DatabaseForm.Command = "" Then Goto Trace_Error ' No underlying data ??
- Set oObject = New Recordset
- With DatabaseForm
- oObject._This = oObject
- oObject._CommandType = .CommandType
- oObject._Command = .Command
- oObject._ParentName = _Name
- oObject._ParentType = _Type
- Set oDatabase = Application._CurrentDb(_DocEntry, _DbEntry)
- Set oObject._ParentDatabase = oDatabase
- Set oObject._ParentDatabase.Connection = .ActiveConnection
- oObject._ForwardOnly = ( .ResultSetType = com.sun.star.sdbc.ResultSetType.FORWARD_ONLY )
- oObject._PassThrough = ( .EscapeProcessing = False )
- oObject._ReadOnly = ( .ResultSetConcurrency = com.sun.star.sdbc.ResultSetConcurrency.READ_ONLY )
- Call oObject._Initialize()
- End With
- With oDatabase
- .RecordsetMax = .RecordsetMax + 1
- oObject._Name = Format(.RecordsetMax, "0000000")
- .RecordsetsColl.Add(oObject, UCase(oObject._Name))
- End With
- If Not ( oObject._BOF And oObject._EOF ) Then oObject.MoveFirst() ' Do nothing if resultset empty
- Set _PropertyGet = oObject
- Case UCase("RecordSource")
- If IsNull(DatabaseForm) Then _PropertyGet = "" Else _PropertyGet = DatabaseForm.Command
- Case UCase("Visible")
- _PropertyGet = ContainerWindow.IsVisible()
- Case UCase("Width")
- _PropertyGet = ContainerWindow.getPosSize().Width
- Case Else
- Goto Trace_Error
- End Select
-
- Exit_Function:
- Utils._ResetCalledSub("Form.get" & psProperty)
- Exit Function
- Trace_Error:
- TraceError(TRACEWARNING, ERRPROPERTY, Utils._CalledSub(), 0, 1, psProperty)
- _PropertyGet = EMPTY
- Goto Exit_Function
- Trace_Error_Form:
- TraceError(TRACEFATAL, ERRFORMNOTOPEN, Utils._CalledSub(), 0, 1, _Name)
- _PropertyGet = EMPTY
- Goto Exit_Function
- Error_Function:
- TraceError(TRACEABORT, Err, "Form._PropertyGet", Erl)
- _PropertyGet = EMPTY
- GoTo Exit_Function
- End Function ' _PropertyGet
- REM -----------------------------------------------------------------------------------------------------------------------
- Private Function _PropertySet(ByVal psProperty As String, ByVal pvValue As Variant) As Boolean
- Utils._SetCalledSub("Form.set" & psProperty)
- If _ErrorHandler() Then On Local Error Goto Error_Function
- _PropertySet = True
- 'Execute
- Dim iArgNr As Integer, i As Integer
- Dim oDatabase As Object
- If _Isleft(_A2B_.CalledSub, "Form.") Then iArgNr = 1 Else iArgNr = 2
- If Not IsLoaded Then Goto Trace_Error_Form
- Select Case UCase(psProperty)
- Case UCase("AllowAdditions")
- If Not Utils._CheckArgument(pvValue, iArgNr, vbBoolean, , False) Then Goto Trace_Error_Value
- If IsNull(DatabaseForm) Then Goto Trace_Error
- DatabaseForm.AllowInserts = pvValue
- DatabaseForm.reload()
- Case UCase("AllowDeletions")
- If Not Utils._CheckArgument(pvValue,iArgNr, vbBoolean, , False) Then Goto Trace_Error_Value
- If IsNull(DatabaseForm) Then Goto Trace_Error
- DatabaseForm.AllowDeletes = pvValue
- DatabaseForm.reload()
- Case UCase("AllowEdits")
- If Not Utils._CheckArgument(pvValue, iArgNr, vbBoolean, , False) Then Goto Trace_Error_Value
- If IsNull(DatabaseForm) Then Goto Trace_Error
- DatabaseForm.AllowUpdates = pvValue
- DatabaseForm.reload()
- Case UCase("Bookmark")
- If Not Utils._CheckArgument(pvValue, iArgNr, Utils._AddNumeric(vbObject), , False) Then Goto Trace_Error_Value
- If IsNull(pvValue) Then Goto Trace_Error_Value
- If IsNull(DatabaseForm) Then Goto Trace_Error
- DatabaseForm.MoveToBookmark(pvValue)
- Case UCase("Caption")
- If Not Utils._CheckArgument(pvValue, iArgNr, vbString, , False) Then Goto Trace_Error_Value
- Set oDatabase = Application._CurrentDb(_DocEntry, _DbEntry)
- Select Case oDatabase._DbConnect
- Case DBCONNECTFORM : oDatabase.Document.CurrentController.Frame.Title = pvValue
- Case DBCONNECTBASE : Component.CurrentController.Frame.Title = pvValue
- End Select
- Case UCase("CurrentRecord")
- If Not Utils._CheckArgument(pvValue, iArgNr, Utils._AddNumeric(), , False) Then Goto Trace_Error_Value
- If pvValue < 1 Then Goto Trace_Error_Value
- If IsNull(DatabaseForm) Then Goto Trace_Error
- DatabaseForm.absolute(pvValue)
- Case UCase("Filter")
- If Not Utils._CheckArgument(pvValue, iArgNr, vbString, , False) Then Goto Trace_Error_Value
- If IsNull(DatabaseForm) Then Goto Trace_Error
- DatabaseForm.Filter = Application._CurrentDb(_DocEntry, _DbEntry)._ReplaceSquareBrackets(pvValue)
- Case UCase("FilterOn")
- If Not Utils._CheckArgument(pvValue, iArgNr, vbBoolean, , False) Then Goto Trace_Error_Value
- If IsNull(DatabaseForm) Then Goto Trace_Error
- DatabaseForm.ApplyFilter = pvValue
- DatabaseForm.reload()
- Case UCase("Height")
- If Not Utils._CheckArgument(pvValue, iArgNr, Utils._AddNumeric(), , False) Then Goto Trace_Error_Value
- If Utils._hasUNOProperty(ContainerWindow, "IsMaximized") Then ' Ignored when <= OO3.2
- ContainerWindow.IsMaximized = False
- ContainerWindow.IsMinimized = False
- End If
- ContainerWindow.setPosSize(0, 0, 0, pvValue, com.sun.star.awt.PosSize.HEIGHT)
- Case UCase("OnApproveCursorMove"), UCase("OnApproveParameter"), UCase("OnApproveReset"), UCase("OnApproveRowChange") _
- , UCase("OnApproveSubmit"), UCase("OnConfirmDelete"), UCase("OnCursorMoved"), UCase("OnErrorOccurred") _
- , UCase("OnLoaded"), UCase("OnReloaded"), UCase("OnReloading"), UCase("OnResetted"), UCase("OnRowChanged") _
- , UCase("OnUnloaded"), UCase("OnUnloading")
- If Not Utils._CheckArgument(pvValue, iArgNr, vbString, , False) Then Goto Trace_Error_Value
- If IsNull(DatabaseForm) Then Goto Trace_Error
- If Not Utils._RegisterEventScript(DatabaseForm _
- , psProperty _
- , _GetListener(psProperty) _
- , pvValue, _Name, True _
- ) Then GoTo Trace_Error
- Case UCase("OrderBy")
- If Not Utils._CheckArgument(pvValue, iArgNr, vbString, , False) Then Goto Trace_Error_Value
- If IsNull(DatabaseForm) Then Goto Trace_Error
- _OrderBy = Application._CurrentDb(_DocEntry, _DbEntry)._ReplaceSquareBrackets(pvValue)
- Case UCase("OrderByOn")
- If Not Utils._CheckArgument(pvValue, iArgNr, vbBoolean, , False) Then Goto Trace_Error_Value
- If IsNull(DatabaseForm) Then Goto Trace_Error
- If pvValue Then DatabaseForm.Order = _OrderBy Else DatabaseForm.Order = ""
- DatabaseForm.reload()
- Case UCase("RecordSource")
- If Not Utils._CheckArgument(pvValue, iArgNr, vbString, , False) Then Goto Trace_Error_Value
- If IsNull(DatabaseForm) Then Goto Trace_Error
- DatabaseForm.Command = Application._CurrentDb(_DocEntry, _DbEntry)._ReplaceSquareBrackets(pvValue)
- DatabaseForm.CommandType = com.sun.star.sdb.CommandType.COMMAND
- DatabaseForm.Filter = ""
- DatabaseForm.reload()
- Case UCase("Visible")
- If Not Utils._CheckArgument(pvValue, iArgNr, vbBoolean, , False) Then Goto Trace_Error_Value
- ContainerWindow.setVisible(pvValue)
- Case UCase("Width")
- If Not Utils._CheckArgument(pvValue, iArgNr, Utils._AddNumeric()) Then Goto Trace_Error_Value
- If Utils._hasUNOProperty(ContainerWindow, "IsMaximized") Then ' Ignored when <= OO3.2
- ContainerWindow.IsMaximized = False
- ContainerWindow.IsMinimized = False
- End If
- ContainerWindow.setPosSize(0, 0, pvValue, 0, com.sun.star.awt.PosSize.WIDTH)
- Case Else
- Goto Trace_Error
- End Select
- Exit_Function:
- Utils._ResetCalledSub("Form.set" & psProperty)
- Exit Function
- Trace_Error_Form:
- TraceError(TRACEFATAL, ERRFORMNOTOPEN, Utils._CalledSub(), 0, 1, _Name)
- _PropertySet = False
- Goto Exit_Function
- Trace_Error:
- TraceError(TRACEFATAL, ERRPROPERTY, Utils._CalledSub(), 0, 1, 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, "Form._PropertySet", Erl)
- _PropertySet = False
- GoTo Exit_Function
- End Function ' _PropertySet
- </script:module>
|