如何在 Digital Micrograph GMS 中将多个面板添加到脚本调色板 2.x

How to add several panels to script palette in Digital Micrograph GMS 2.x

我想知道如何将几个 UI 面板添加到 GMS 2.x 中的脚本面板。我在 Gatan 的过时文档 (http://digitalmicrograph-scripting.tavernmaker.de/other%20resources/Old-DMHelp/FloatingPalettes.htm) 中找到了一些命令,但其中大部分在 GMS 2.32 中找不到。

给定 UI class "UI_class"(包括创建界面的 init() 函数)我已经成功注册了脚本面板并使用以下命令打开了相应的小工具:

object UI=Alloc(UI_class).init() RegisterScriptPalette(UI,"Type","Display") OpenGadgetPanel("Display")

不幸的是,找不到第一个对我来说最有希望的命令 GadgetWindowAddGadgetPanel(),以便将第二个 UI 添加到同一个调色板。

有人知道工作等效项吗?

提前感谢您分享您的经验,我期待看到一些设计精美的浮动调色板!

我不能 100% 确定我是否正确理解了问题。每个 UI 派生对象形成它自己的“对话框”,可以显示为

  • 模态对话框 - 使用 Pose( DlgObj )
  • 无模式对话框 - 使用 Display( DlgObj, "name" )
  • 小工具面板 - 首先 'registering' 它然后显示已注册的对话框

如果您有多个宽度相同的小工具,您可以通过拖放将它们添加在一起。这不是对话框的一部分 - 只是 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 调色板都固定在适当的位置。 (旧的自定义对话框仍然出现,但有点 'out-of-style' 的方式。

GMS 2.x 的“浮动 Window 布局”工具:

使用此工具存储的“布局”信息实际上存储在 Windows 注册表中。

但到目前为止我从未使用过它。 (而且它也只适用于 GMS 2.x。)


还值得一提的是,RegisterScriptPalette 确实如其所说:它将 UI 永久地 添加到应用程序知道的调色板列表中的。

因此 运行将脚本运行两次,您会得到 两个 个相同的调色板。你通常不想要那个!只需使用 OpenGadgetPanel 即可显示任何已注册的调色板。

但是,'registered' 调色板将仅在应用程序处于 运行ning 时保留 'registered',因此它们会在 DM 重新启动时消失。

如果您想要更持久的东西,您需要通过“文件”菜单将代码安装为 。请注意,代码的任何 可执行 部分将在启动时自动 运行。所以你想让 RegisterScriptPalette 成为该代码的一部分,而不是 OpenGadgetPanel.