本文描述利用Scheme创建Fluent GUI过程中的对话框与表格问题。
Fluent GUI具有三层结构: Dialog:最顶层结构,所有的界面元素均放置于Dialog中。利用函数cx-create-panel创建 Tables:主要用于布局。将界面元素放置于Table中,便于管理。Table利用函数cx-create-table创建 控件:实现数据输入及命令响应的元素。如数据输入框、文本输入框、按钮、列表及下拉框等。
在Fluent中,每一个弹出的对话框都称之为Dialog。 对话框通常利用cx-create-panel创建,创建完毕后,还需要利用函数cx-show-panel将其显示出来。 (cx-create-panel title apply-cb update-cb)
函数中的参数: title:对话框的名字,出现在对话框的标题上,变量为字符串类型 apply-cb:回调函数,当鼠标点击对话框的OK按钮后执行该函数 update-cb:回调函数,当对话框开启时执行该函数
注意:apply-cb和update-cb参数通常是在对话框打开或单击OK按钮时调用的函数名,但这并非是必须的,apply-cb和update-cb参数也可以用布尔值代替函数名。当使用布尔值代替函数名时,点击OK按钮对话框不执行任何操作。
显示对话框使用cx-show-panel函数: 其中,panel为创建的panel对象。 一个最简单的对话框代码如下所示: (define my-dialog (cx-create-panel "my dialog box" #t #f)) (cx-show-panel my-dialog)
将上述代码保存到以scm为扩展名的文本文件中,启动Fluent后利用菜单File → Read → Scheme…读取保存的scm文件即可开启对话框。如下图所示。
这个对话框很简陋,除了三个什么功能都没有的按钮后就没别的了。 下面来为按钮添加功能,比如说想要对话框启动后在TUI窗口打印消息,以及在点击OK按钮后打印消息。可以改造代码如下所示。 ;定义apply-cb函数,该函数在点击OK按钮后执行 (define (apply-cb . args) (display "clicked OK button!\n");该行语句在TUI窗口打印文本消息 ) ;定义update-cb函数,该函数在对话框启动时执行 (define (update-cb . args) (display "dialog box opened!\n") ) ;定义对话框my-dialog (define my-dialog (cx-create-panel "my dialog box" apply-cb update-cb)) (cx-show-panel my-dialog)
相同方式加载该scm文件后,如下图所示,在TUI窗口打印文本消息。点击OK按钮也会在TUI窗口打印文本消息。
table主要用于布局。一个dialog中可以包含有多个table。 table采用函数cx-create-table创建,函数形式如: (cx-create-table parent label border below right-of row column)
函数中的参数包括: 注意: border, below, right-of, row, column为可选项,可以为空。
如下面的代码: 显示对话框如下图所示。 没有scheme代码高亮显示,真是low得可以。
|