第三步:安排对话框内容
尽管不难,但这是最费时的步骤。当你完成之后,你会发现,在你写描述对话框代码之前先画一个草图会对你很有帮助。

这是一个几乎包含了所有元素的对话框。
你应该记得在第二步中,你为窗口定义了一个属性列表叫做lswindow。为了描述对话框的内容,你应该建立一个线性列表,来包含在你的对话框出现的每一个元素。也就是说,你要建一个list列表来描述可见的和不可见的所有组件。
开始定义一个空的表:
lsDialog = []
还记得定义lsWindow时的两个部分么?我们在这里也要用相同的方法来定义lsDialog列表。先用getItemPropList()方法获得默认的元素属性列表,然后改变它,然后添加(最好先复制)到一个list列表中。还不明白么?那好,我们现在就添加一个元素,你会发现其实很简单。
formatter = oDialog.getItemPropList()
这行执行后,formatter的值应该是:
[ #value: 0,
#type: #checkBox,
#Attributes: [],
#title: "title",
#tip: "tip",
#locH: 20,
#locV: 24,
#width: 200,
#height: 210,
#enabled: 1 ]
你希望第一个组件不是一个复选框,所以你应该改变它的#type属性,然后复制formatter,然后添加到lsDialog中。
formatter.type = #windowBegin
lsDialog.append( formatter.duplicate() )
恭喜!你已经向你的对话框添加了一个组件了。从这里开始,你就可以用同样的方法添加任何组件,只要你愿意。现在我们来看看要添加所有组件的程序:
-- 添加一个不可编辑的标签
widget = oDialog.getItemPropList()
widget.type = #label
widget.value = "My dialog will display this text."
lsDialog.append( widget.duplicate() )
-- 添加一个文本框
widget = oDialog.getItemPropList()
widget.type = #editText
widget.value = "Default text"
lsDialog.append( widget.duplicate() )
-- 添加一个复选框
widget = oDialog.getItemPropList()
widget.type = #checkBox
widget.title = "My Checkbox"
widget.value = TRUE -- checked by default
lsDialog.append( widget.duplicate() )
-- 添加一个单选框
widget = oDialog.getItemPropList()
widget.type = #radiobutton
widget.title = "My Radio Button"
widget.value = TRUE -- checked by default
lsDialog.append( widget.duplicate() )
-- 添加一个标准的按钮
widget = oDialog.getItemPropList()
widget.type = #defaultPushButton -- or #pushButton
widget.title = "OK"
lsDialog.append( widget.duplicate() )
-- 添加一个位图成员
widget = oDialog.getItemPropList()
widget.type = #bitmap
widget.value = member("myDialogGraphic")
lsDialog.append( widget.duplicate() )
-- 添加一个滑动条
widget = oDialog.gettemPropList()
widget.type = #integerSliderH -- or #floatSliderH
attributeList = [:]
attributeList.addProp( #valueRange, [ #min:1,#max:100,#increment:1 ] )
attributeList.addProp( #sliderStyle, [ #ticks,#value ] )
attributeList.addProp( #layoutStyle, [ #left ] )
widget.attributes = attributeList
widget.value = 50
lsDialog.append( widget.duplicate())
-- 添加一个弹出列表框
widget = oDialog.getItemPropList()
widget.type = #popupList
valList = [ "640 x 480", "800 x 600", "Full Screen" ]
popList = [ #normal ]
layList = [ #left,#minimize ]
attributeList = [ #popupStyle:popList, #valueList:valList, #layoutStyle:layList
]
widget.attributes = attributeList
widget.value = valList[ 3 ]
lsDialog.append( widget.duplicate() )
|