如何在 LiveCode 中创建自定义对话框

How to create a custom dialog box in LiveCode

我有一个按钮。当我单击该按钮时,我希望弹出一个对话框,其中包含多个文本字段和按钮。我一直在四处寻找,试图找出如何做到这一点,但我越来越困惑。有人可以帮忙吗?

最简单的对话框示例如下。为您的主堆栈创建一个新的子堆栈并调用子堆栈 "Dialog"。向子堆栈添加一个按钮,调用按钮 "OK" 并为其提供以下脚本:

on mouseUp
  set the dialogData to "OK" 
  close this stack
end mouseUp

在你的 mainstack 中创建另一个按钮并给它这个脚本:

on mouseUp
  go stack "Dialog" as modal
  put the dialogData
end mouseUp

您现在有一个对话框 window。您可以向对话框堆栈添加字段和更多按钮。例如,您可以使用以下脚本创建一个取消按钮:

on mouseUp
  set the dialogData to "Cancel"
  close this stack
end mouseUp

如果你有一个字段,你可以将按钮 "OK" 的脚本更改为

on mouseUp
  set the dialogData to fld 1
  close this stack
end mouseUp

在您的文件中创建一个看起来像您希望对话框看起来的新子堆栈,然后使用 "modal" 命令显示它。

虽然模态对话框有点过时,但为什么不把它做成一个单独的堆栈,打开它(例如使用 "modeless" 命令),这样就可以让用户检查或复制数据主要 window?

更新:按照 Mark 的建议进行操作。 "as modal" 语法比仅使用 "modal" 作为命令更具可读性(不知道 LiveCode 现在有这种变体)。但是,如果可以的话,我仍然建议使用无模式,如果用户可以在 windows 之间来回切换而不是被你强制进入固定顺序,这对你的用户来说更好。