Hi 大家好,我是小周,
在众多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好了,大家可以去测试测试!