tiptop中Table显示图片的方法

           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	
     吐舌头好了,大家可以去测试测试!

 

猜你喜欢

转载自blog.csdn.net/sychou/article/details/47002843