如何在 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
.
我想知道如何将几个 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
.