如何在 LibreOffice Base 5.0.2.2 中创建一个按钮来禁用表单中的控件
How to create a button to disable controls in a form, in LibreOffice Base 5.0.2.2
美好的一天!
这是我第一次使用 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
但是,我确认一旦我切换到不同的记录,该复选框就会清除。为了阻止这种情况发生,我将所有控件更改为子窗体,但复选框除外。但是,由于某种原因,我现在无法 select 宏中的 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
我真的在这里陷入困境。我知道我可以 select 复选框,而且我之前已经 select 编辑过主窗体,那么为什么我不能 select 子窗体?
编辑:这个问题的答案实际上是我没有做的最简单的事情之一:关闭表格并重新打开它。它现在正在工作。所以,我想我很好:)
美好的一天!
这是我第一次使用 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
但是,我确认一旦我切换到不同的记录,该复选框就会清除。为了阻止这种情况发生,我将所有控件更改为子窗体,但复选框除外。但是,由于某种原因,我现在无法 select 宏中的 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
我真的在这里陷入困境。我知道我可以 select 复选框,而且我之前已经 select 编辑过主窗体,那么为什么我不能 select 子窗体?
编辑:这个问题的答案实际上是我没有做的最简单的事情之一:关闭表格并重新打开它。它现在正在工作。所以,我想我很好:)