在众多tiptop版本中,table表一般只用在显示数据,通常表的栏位基本都是显示字符.
众所周知TABLE的显示是有多种方式的,如下图:
今天就来介绍如何让table显示图片:
程序运行显示如下:
在TIPTOP 5.3版本中已经很多使用这种模式了,
那么我们废话不多说,来一步步的看如何制作一个带有动画效果的图片显示模式的TABLE
步骤1:
与普通4FD一样,去画一个画面档,画面上放一个TABLE,TABLE的栏类型选择:FFImage(重点),然后编译OK,如图:
步骤2:准备好我们需要的图片,对于TIPTOP系统,我们一般放在服务器上,指定一个目录,将所有的图片放到文件夹中.
步骤3:写一个普通4GL程序,关键代码如下(楼主写了一个函数去测试):
FUNCTION showpic()
DEFINE dir STRING
DEFINE dir_handle INTEGER
DEFINE image STRING
DEFINE arr DYNAMIC ARRAY OF STRING
DEFINE type CHAR(1)
LET dir = "/u1/topprod/topcust/czz/4gl/products" #测试路径,图片放在这个目录下
CALL arr.clear()
CALL ui.Interface.refresh()
CALL os.Path.dirsort("name",1)
LET dir_handle = os.Path.dirOpen(dir)
WHILE TRUE
LET image = os.Path.dirNext(dir_handle)
IF image IS NULL THEN
EXIT WHILE
END IF
IF image MATCHES "*.png" OR image MATCHES "*.jpg" OR image MATCHES "*.gif" THEN
CALL arr.appendElement()
LET arr[arr.getLength()] = SFMT("%1/%2", dir,image)
END IF #只会去抓图片格式的文件
END WHILE
CALL os.Path.dirClose(dir_handle)
DIALOG ATTRIBUTES(UNBUFFERED)
INPUT type FROM type ATTRIBUTES(WITHOUT DEFAULTS=TRUE)
ON CHANGE type
IF arr_curr() > arr.getLength() THEN
CALL DIALOG.setCurrentRow("scr",arr.getLength()) #第一张
END IF
CALL DIALOG.nextField("scr.field")
END INPUT
DISPLAY ARRAY arr TO scr.*
BEFORE ROW
MESSAGE SFMT("Current image is %1", arr[arr_curr()])
ON ACTION accept
CALL FGL_WINMESSAGE("Info",SFMT("你选择的文件时 %1", arr[arr_curr()]),"")
CONTINUE DIALOG
END DISPLAY
BEFORE DIALOG
CALL DIALOG.nextField("scr.field")
ON ACTION close
EXIT DIALOG
END DIALOG
END FUNCTION
转载请注明:赫非域 » tiptop中Table显示图片的方法