我不能 100% 确定我正确理解了这个问题。每个 UI 派生对象都形成了自己的“对话框”,可以显示为
- 模态对话框 - 使用
Pose( DlgObj )
- 无模式对话框 - 使用
Display( DlgObj, "name" )
- 小工具面板 - 首先“注册”它,然后显示注册对话框
如果您有多个宽度相同的小工具,您可以通过拖放将它们添加到一起。这不是对话框的一部分——只是 UI 如何与对话框交互的一部分。 (您将一个调色板拖到屏幕的一侧以附加它,然后您可以将其他调色板拖到它上面。)
|
|
生成一些对话框的示例脚本:
Object CreateDlgObj()
{
TagGroup DialogTG = DLGCreateDialog("My Dialog")
TagGroup StrFieldTG = DLGCreateStringField("Some string",20)
DialogTG.DLGAddElement(StrFieldTG)
Object DialogObj = Alloc(UIFrame)
DialogOBJ.Init(DialogTG)
return DialogObj
}
// MAIN
// Show dialog as modal dialog
// CreateDLGObj().Pose()
// Show dialog as modeless dialog
// CreateDLGObj().Display( "NewName" )
// Register dialog as gadget and then display
// RegisterScriptPalette( CreateDLGObj(),"", "RegDlg" )
// OpenGadgetPanel( "RegDlg" )
// Create, register and display multiple dialogs as palettes
number nMax = 2
For( number i =0; i<nMax; i++)
{
string name = "MyDlg_" + i
RegisterScriptPalette( CreateDLGObj(),"", name )
OpenGadgetPanel( name )
}
请注意,在 GMS 1.x、GMS 2.x 和 GMS 3.x 中,“小工具面板”或“工具面板”或您所称的任何名称都不同,因为它始终是决定如何处理的“主程序”对话框。 GMS 2.x 是唯一的版本,其中程序“记住”多个此类调色板的布局。这些布局可以保存和加载。 GMS 3 不再具有此功能,因为所有 UI 调色板都已固定到位。 (旧的自定义对话框仍然出现,但有点“过时”。
GMS 2.x 的“浮动窗口布局”工具:
使用此工具存储的“布局”信息实际上存储在 Windows 注册表中。
但到目前为止我从未使用过它。 (而且它也只适用于 GMS 2.x。)
还值得一提的是,RegisterScriptPalette 确实做到了:它将 UI 永久添加到应用程序知道的调色板列表中。
因此,运行脚本两次,您将获得 两个 相同的调色板。你通常不希望这样!只需使用OpenGadgetPanel 即可显示任何已注册的调色板。
但是,“已注册”调色板只会在应用程序运行期间保持“已注册”状态,因此它们会在 DM 重新启动时消失。
如果您想要更持久的东西,您需要通过文件菜单将代码安装为库。请注意,代码的任何可执行部分都将在启动时自动运行。所以你想让RegisterScriptPalette成为该代码的一部分,而不是OpenGadgetPanel。