【问题标题】:How to create a button to disable controls in a form, in LibreOffice Base 5.0.2.2如何在 LibreOffice Base 5.0.2.2 中创建一个按钮以禁用表单中的控件
【发布时间】:2015-10-15 15:18:08
【问题描述】:

美好的一天!

这是我第一次使用 LibreOffice Base,我对宏和 SQL 编程在这个工具中的工作方式不是很熟悉。

我想要做的是有一个按钮或一个检查按钮,当按下时启用或禁用一个控件或一系列控件。在我看来,最简单的方法是录制宏,但每当我尝试录制它时,它都不会启用或禁用预期的字段。相反,它只是进出设计视图。

但是,如果可能的话,我宁愿这样做而不必求助于宏。我相信解决方案必须是 SQL,但我很难理解执行此过程需要使用什么语法。

我不确定您可能还需要什么其他信息,但请告诉我。

【问题讨论】:

    标签: sql button macros base libreoffice


    【解决方案1】:

    好的,经过大量阅读,我已经能够确定如何创建 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
    

    我真的陷入了困境。我知道我可以选中复选框,并且我之前选择过 MainForm,为什么我不能选择 SubForm?

    编辑:对这个问题的响应实际上是我没有做的最简单的事情之一:关闭表单并重新打开它。它现在正在工作。所以,我想我很好:)

    【讨论】:

      猜你喜欢
      • 2020-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-20
      • 2019-02-15
      • 2017-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多