【问题标题】:How to add several panels to script palette in Digital Micrograph GMS 2.x如何在 Digital Micrograph GMS 2.x 中将多个面板添加到脚本调色板
【发布时间】:2017-12-15 09:59:26
【问题描述】:

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

给定一个 UI 类“UI_class”(包括一个创建界面的 init() 函数),我已经成功注册了脚本面板并使用以下方法打开了相应的小工具:

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

不幸的是,找不到在第一个实例中对我来说最有希望的命令GadgetWindowAddGadgetPanel(),以便将第二个用户界面添加到同一调色板。

有人知道等效的工作吗?

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

【问题讨论】:

    标签: user-interface dialog dm-script


    【解决方案1】:

    我不能 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

    【讨论】:

    • 出色、快速和绝对的澄清答案,谢谢!调色板现在开始对我更有意义了 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多