大家好!
这是我第一次使用LibreOffice Base,我不太熟悉宏和SQL编程在这个工具中的工作方式。
我想做的是有一个按钮或一个复选按钮,当按下启用或禁用一个控件或一系列控件。在我看来,最简单的方法是记录一个宏,但每当我尝试记录它时,它不会启用或禁用预期的字段。相反,它只是进入和退出设计视图。
但是,如果可能的话,我更愿意这样做,而不必诉诸宏。我相信解决方案必须是SQL,但是我很难理解我需要使用什么语法来执行这个过程。
我不确定您还需要什么信息,请告诉我。
好了,经过大量阅读,我已经能够确定如何创建一个BASIC宏来允许复选框激活或停用文本控件:
Sub enableID
Dim oDocument As Object
Dim oForm As Object
Dim oID As Object
Dim oCheck As Object
oDocument = ThisComponent
oForm = oDocument.getDrawPage().getForms().getByName("MainForm")
oID = oForm.getByName("fmtID")
oCheck = oForm.getByName("switchID")
If oCheck.State = 1 Then
oID.Enabled = "True"
Else
oID.Enabled = "False"
EndIf
End Sub
但是,我验证了当我切换到另一个记录时,复选框将被清除。为了防止这种情况发生,我将所有控件更改为子窗体,除了复选框。但是,由于某种原因,我现在无法在宏中选择SubForm,这表明不存在这样的元素。下面是相应的代码:
Sub enableID
Dim oDocument As Object
Dim oForm As Object
Dim oFCheck As Object
Dim oID As Object
Dim oCheck As Object
oDocument = ThisComponent
oForm = oDocument.getDrawPage().getForms().getByName("MainForm")
oFCheck = oForm.getByName("subForm")
oID = oFCheck.getByName("fmtID")
oCheck = oForm.getByName("switchID")
If oCheck.State = 1 Then
oID.Enabled = "True"
Else
oID.Enabled = "False"
EndIf
End Sub
我真的很困惑。我知道我可以选择复选框,我之前已经选择了主表单,那么为什么我不能选择子表单呢?
编辑:对这个问题的回应实际上是我没有做的最令人困惑的简单事情之一:关闭表单并重新打开它。现在起作用了。所以,我想我很好:)