1

我在 VBA 兼容的 Sax 基本引擎的对话框中定义了以下选项组(嵌入用于本地化应用程序 Passolo 中的脚本):

Sub Main
   .
   .
   Begin Dialog UserDialog 690,404,"Export and Import Text Files" ' %GRID:10,7,1,1
       .
       .
       OptionGroup .ExportImport
          OptionButton 30,77,190,14,"Export for translation",.optExport
          OptionButton 20,221,190,14,"Import translations",.optImport

我想分配一个事件处理程序来捕获选择的变化,以便我可以根据当前选择启用/禁用对话框中的一些其他控件。

如何为 OptionGroup 定义事件处理程序?它应该定义在 OptionGroup 级别还是 OptionButton 级别(即每个单选按钮一个事件处理程序)?

4

1 回答 1

1

在 Sax Basic/WinWrap Basic 中,我所知道的最接近事件处理程序的是 ( dialogfunc ) 原型。您的实现应该处理对以下OptionGroup值的更改case 2:顶部单选按钮的 SuppValue 为 0。

当您选择单选按钮时,下例中的 dialogfunc 将向 Passolo Messages 窗口输出文本:

Sub Main
Begin Dialog UserDialog 690,404, "Export and Import Text Files",.ExpImpDlgFunct
   OptionGroup .ExportImport
      OptionButton 30,77,190,14,"Export for translation",.optExport
      OptionButton 30,221,190,14,"Import translations",.optImport
      OKButton 30,280,60,20
End Dialog
Dim dlg As UserDialog
Dialog dlg
End Sub

Private Function ExpImpDlgFunct(DlgItem$, Action%, SuppValue&) As Boolean
Select Case Action%
Case 1 ' Dialog box initialization
Case 2 ' Value changing or button pressed
    If DlgItem = "ExportImport" Then
        Select Case SuppValue
        Case 0:
            PSL.Output("Export")
        Case 1:
            PSL.Output("Import")
        End Select
    End If
    Rem DlgFunc = True ' Prevent button press from closing the dialog box
Case 3 ' TextBox or ComboBox text changed
Case 4 ' Focus changed
Case 5 ' Idle
    Rem DlgFunc = True ' Continue getting idle actions
Case 6 ' Function key
End Select
End Function

您可以在此处此处找到对话框函数的其他示例。

于 2016-03-30T12:25:12.303 回答