在DigitalMicrograph脚本中定义一系列功能

埃德·怀特

我需要在一个类中定义一组函数。每个都将不同的值传递给另一个函数:

void function00(object self, taggroup tg) self.otherfunction(tg,0,0)
void function01(object self, taggroup tg) self.otherfunction(tg,0,1)
void function02(object self, taggroup tg) self.otherfunction(tg,0,2)
void function03(object self, taggroup tg) self.otherfunction(tg,0,3)
void function04(object self, taggroup tg) self.otherfunction(tg,0,4)

我有100个这样的函数,我不希望分别定义每个函数。考虑以上示例,我想做类似的事情:

for(number i=0; i<5; i++){
    void function0+i(object self, taggroup tg) self.otherfunction(tg,0,i)
}

单靠它是行不通的。有什么建议么?

对于更多上下文,我在2的for循环内创建了一系列复选框,其中包含以下内容:

BOXinsides.DLGAddElement(DLGCreateCheckBox(label,0,"function"+i+j).DLGIdentifier("#function"+i+j))

而且我需要以某种明智的方式定义所有功能。

BmyGuest

DigitalMicrograph脚本不允许这种类型的模板代码。但是,您可以通过将所有复选框项链接到相同的操作方法来解决问题。在TagGroup(它是复选框项目本身)中传递的操作方法的签名。您可以使用它来从中获取信息,例如,通过查看其标题之类的复选框属性:

class myUI : UIframe
{
  void generalFunction( object self , tagGroup checkTg )
  {
    // checkTg is the taggroup of the checkbox which fired the method.
    // Use its Title to get back the running value!

    string label = checkTg.DLGGetTitle()                
    Result( "\n label of checkbox:" + label )
    number i = val( right( label, len( label ) - 1 ) )   
    Result( "\n running index:" + i )
  }

  TagGroup CreateCheckboxes( object self )
  {
    TagGroup checkboxGroup = DLGCreateGroup()
    for ( number i = 0 ; I < 5 ; i++ )
    {
     checkboxGroup.DLGAddElement( DLGCreateCheckBox( "C" + I , 0 , "generalFunction" ) )
    }
    return checkboxGroup 
  }

  TagGroup CreateDLGTags( object self )
  {
    TagGroup dlg, dlgitems
    dlg = DLGCreateDialog( "Test" , dlgitems )
    dlgitems.DLGAddElement( self.CreateCheckboxes() )
    return dlg
  }

  object Init( object self )
  {
    return self.super.init( self.CreateDLGTags() )
  }
 }

// MAIN SCRIPT calling the dialog
{
  Object dlg = Alloc(myUI).Init()
  dlg.pose()
}

您也可以直接将信息“附加”到复选框。与所有对话框项一样,复选框实际上只是特定的TagGroup对象,您可以在其中添加所需的任何对象。在下面的示例中,我添加了一个带有随机数的附加标签:

class myUI : UIframe
{
  void generalFunction( object self , tagGroup checkTg )
  {
    // checkTg is the taggroup of the checkbox which fired the method.
    // Use its Title to get back the running value!

    string label = checkTg.DLGGetTitle()                
    Result( "\n label of checkbox:" + label )
    number rnd
    if ( checkTG.TagGroupGetTagAsNumber( "Random NR", rnd ) )
    {
      Result( "\n Random number:" + rnd )
    }
  }

  TagGroup CreateCheckboxes( object self )
  {
    TagGroup checkboxGroup = DLGCreateGroup()
    for ( number i = 0; I < 5 ; i++ )
    {
     TagGroup checkbox = DLGCreateCheckBox( "C" + I , 0 , "generalFunction" )
     checkbox.TagGroupSetTagAsNumber( "Random NR", Random() )
     checkboxGroup.DLGAddElement( checkbox )
    }
    return checkboxGroup 
  }

  TagGroup CreateDLGTags( object self )
  {
    TagGroup dlg, dlgitems
    dlg = DLGCreateDialog( "Test" , dlgitems )
    dlgitems.DLGAddElement( self.CreateCheckboxes() )
    return dlg
  }

  object Init( object self )
  {
    return self.super.init( self.CreateDLGTags() )
  }
 }

// MAIN SCRIPT calling the dialog
{
  Object dlg=Alloc(myUI).Init()
  dlg.pose()
}

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在MySQL中运行一系列脚本

来自分类Dev

如何在Django中迭代一系列功能?

来自分类Dev

NSOperation管理一系列功能

来自分类Dev

如何创建一个简单的脚本(在Linux中)执行一系列命令?

来自分类Dev

如何在bash脚本中的一系列命令中重用sudo

来自分类Dev

在bash脚本中的特定范围内创建一系列不同的随机数

来自分类Dev

调试期间暂时禁用R脚本中的一系列命令

来自分类Dev

如何在Bash脚本中列出一系列文件?

来自分类Dev

在 Korn shell 脚本中检查一系列 RedHat 版本

来自分类Dev

如何在Python中循环执行一系列功能?

来自分类Dev

按顺序对数据帧中的一系列行应用匹配和替换功能

来自分类Dev

如何在Node.js中执行一系列同步和异步功能

来自分类Dev

如何根据多索引定义的范围对一列中的一系列值求和

来自分类Dev

串联一系列DataFrame的通用脚本

来自分类Dev

从脚本向新终端发送一系列命令

来自分类Dev

组成一系列返回未来的功能

来自分类Dev

Clojure,具有一系列功能的映射

来自分类Dev

将一系列功能应用于数据

来自分类Dev

IF功能跨越一系列单元格

来自分类Dev

在NASM中定义一系列字节时,“操作数1之后需要逗号”?

来自分类Dev

基于一系列数字在 Symfony2 中定义路由要求

来自分类Dev

以预定义的顺序显示一系列<div>

来自分类Dev

如何销毁一系列自定义组件

来自分类Dev

如何遍历一系列自定义对象?

来自分类Dev

loop,python,定义一系列变量和函数

来自分类Dev

简化一系列 IF THEN

来自分类Dev

从iOS中的一系列对象中获取价值

来自分类Dev

从 jquery 中的一系列值中获取数据

来自分类Dev

在angularjs中创建一系列显示/隐藏屏幕

Related 相关文章

热门标签

归档