我想在dm-script中的模态/无模式对话框上创建一个旋转框,它允许用户通过单击向上或向下箭头按钮(即旋转按钮)来增加或减少文本字段中的数字值。
是否有适当的方法来创建这样一个旋转盒?如果你能分享一些智慧,我们会很感激的。先谢谢你。
发布于 2018-03-02 21:49:34
脚本对话框不存在“自旋控制”。
但是,您可以通过创建和安排按下按钮来构建代理自旋控制。这有点粗糙,但是下面的代码创建了这样的代码:

Class CMySpin : UIFrame
{
TagGroup CreateDLGTgs( object self )
{
TagGroup DLGtgs, DLGItems
DLGtgs = DLGCreateDialog( "Test", DLGItems )
TagGroup upButton = DLGCreatePushButton( "U", "OnPushUp" ).DLGExternalPadding(0,-5).DLGInternalPadding(-2,-3)
TagGroup downButton = DLGCreatePushButton( "D", "OnPushDown" ).DLGInternalPadding(-2,-3)
TagGroup field = DLGCreateIntegerField( 10, 10 ).DLGIdentifier( "field" )
TagGroup SpinGroup = DLGGroupItems( upButton, downButton ).DLGTableLayout(1,2,0)
TagGroup fieldWithSpin = DLGGroupItems( field, SpinGroup ).DLGTableLayout(2,1,0)
DLGItems.DLGAddElement( fieldWithSpin )
return DLGtgs
}
void OnPushUp( object self )
{
taggroup fieldTG = self.LookupElement( "field" )
number value = fieldTG.DLGGetValue()
value++
fieldTG.DLGValue( value )
}
void OnPushDown( object self )
{
taggroup fieldTG = self.LookupElement( "field" )
number value = fieldTG.DLGGetValue()
value--
fieldTG.DLGValue( value )
}
void CreateAndPose( object self )
{
self.Init( self.CreateDLGTgs() )
self.Pose()
}
}
Alloc(CMySpin).CreateAndPose()然后,你可以通过使用位图按钮而不是简单的按钮来处理外观,然后设置这些按钮,直到它们看起来更有吸引力。
f.e.我创建了这个变体:

使用此代码:
Class CMySpin : UIFrame
{
TagGroup CreateDLGTgs( object self )
{
image arrowImg := [7,5]:
{ { 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 1, 0, 0, 0 },
{ 0, 0, 1, 1, 1, 0, 0 },
{ 0, 1, 1, 1, 1, 1, 0 },
{ 0, 0, 0, 0, 0, 0, 0 } }
number factor = 2
image upArrow := RealImage("",4,factor*7,factor*5)
upArrow=arrowImg.warp( icol / factor, irow / factor )
image downArrow = upArrow
downArrow.FlipVertical()
rgbImage upArrowUp = RGB( upArrow * 100, upArrow * 100, upArrow * 100 )
rgbImage upArrowDown = RGB( upArrow * 200, upArrow * 200, upArrow * 200 )
rgbImage downArrowUp = RGB( downArrow * 100, downArrow * 100, downArrow * 100 )
rgbImage downArrowDown = RGB( downArrow * 200, downArrow * 200, downArrow * 200 )
TagGroup DLGtgs, DLGItems
DLGtgs = DLGCreateDialog( "Test", DLGItems )
TagGroup upButton = DLGCreateBevelButton( upArrowUp, upArrowDown, "OnPushUp" ).DLGExternalPadding(0,-3).DLGInternalPadding(-2,-3)
TagGroup downButton = DLGCreateBevelButton( downArrowUp, downArrowDown, "OnPushDown" ).DLGExternalPadding(0,-3).DLGInternalPadding(-2,-3)
TagGroup field = DLGCreateIntegerField( 10, 10 ).DLGIdentifier( "field" )
TagGroup SpinGroup = DLGGroupItems( upButton, downButton ).DLGTableLayout(1,2,0)
TagGroup fieldWithSpin = DLGGroupItems( field, SpinGroup ).DLGTableLayout(2,1,0)
DLGItems.DLGAddElement( fieldWithSpin )
return DLGtgs
}
void OnPushUp( object self )
{
taggroup fieldTG = self.LookupElement( "field" )
number value = fieldTG.DLGGetValue()
value++
fieldTG.DLGValue( value )
}
void OnPushDown( object self )
{
taggroup fieldTG = self.LookupElement( "field" )
number value = fieldTG.DLGGetValue()
value--
fieldTG.DLGValue( value )
}
void CreateAndPose( object self )
{
self.Init( self.CreateDLGTgs() )
self.Pose()
}
}
Alloc(CMySpin).CreateAndPose()https://stackoverflow.com/questions/49074401
复制相似问题