| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7705 人关注过本帖, 6 人收藏
标题:在VFP中显示图片的一个方法
只看楼主 加入收藏
取消关键字高亮
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
结帖率:100%
收藏(6)
 问题点数:0 回复次数:40 
在VFP中显示图片的一个方法
附件为独立运行EXE程序,下载后将扩展名.zip删掉,有VFP9运行库即可。

test.exe.zip (2.79 MB)


程序代码:
#INCLUDE "Const.h"

CLEAR ALL
CLOSE DATABASES ALL
CLEAR 

SET SAFETY OFF 

goForm = CREATEOBJECT("C_Form")
goForm.Show
READ EVENTS

CLOSE DATABASES ALL
CLEAR ALL
RETURN 

*-----------------------------
* 建立图片数据库
*-----------------------------
FUNCTION CreateDBF() AS Boolean
    LOCAL laFiles[1,5]
    LOCAL lnIndex
    LOCAL lbSuccess
   
    lbSuccess = .F.
    IF ADIR(laFiles, "Pictures\*.*") > 0
        CREATE TABLE Pictures FREE (P01 C(20), P02 M)
        SELECT Pictures
        FOR lnIndex = 1 TO ALEN(laFiles,1)
            APPEND BLANK
            REPLACE P01 WITH PADL(lnIndex, 3, '0'), P02 WITH FILETOSTR("Pictures\" + laFiles[lnIndex,1])
        NEXT
        USE IN Pictures
        lbSuccess = .T.
    ELSE
        MESSAGEBOX("图片目录中没有文件", 64)
    ENDIF
   
    RETURN lbSuccess
   
ENDFUNC

*-----------------------------
* 主窗体
*-----------------------------
DEFINE CLASS C_Form AS my_Form
    Caption = "测试例程"
    ShowWindow = 2
   
    ADD OBJECT Grid1  AS Grid
    ADD OBJECT Image1 AS Image WITH Stretch = 1
   
    PROCEDURE Load
        USE Pictures EXCLUSIVE IN 0
    ENDPROC
   
    PROCEDURE Unload
        USE IN Pictures
    ENDPROC
   
    PROCEDURE Arrange
        WITH ThisForm.Grid1
            .Top = 5
            .Left = 5
            .Height = ThisForm.Height - .Top - 5
            .Width = 100
        ENDWITH
        WITH ThisForm.Image1
            .Top = 5
            .Left = ThisForm.Grid1.Left + ThisForm.Grid1.Width + 5
            .Height = ThisForm.Height - .Top - 5
            .Width = ThisForm.Width - .Left - 5
        ENDWITH
    ENDPROC
   
    PROCEDURE Grid1.Init
        WITH This
            .DeleteMark = .F.
            .RecordSourceType = 1
            .RecordSource = "Pictures"
            .ColumnCount = 1
            WITH .Columns(1)
                WITH .Header1
                    .Caption = "图片标题"
                    .FontBold = .T.
                    .Alignment = 2
                ENDWITH
                .ControlSource = "Pictures.P01"
                .Width = 80
            ENDWITH
        ENDWITH
    ENDPROC
   
    PROCEDURE Grid1.AfterRowColChange(tnColumn)
        WITH ThisForm.Image1
            .PictureVal = Pictures.P02
        ENDWITH
    ENDPROC
   
ENDDEFINE

*-----------------------------
* 自定义窗体类
* 备注:继承窗体必须存在Arrange方法
*-----------------------------
DEFINE CLASS my_Form AS Form
    MinWidth = 800
    MinHeight = 600
    AutoCenter = .T.
    KeyPreview = .T.

    PROCEDURE Activate
        ThisForm.Arrange
    ENDPROC
   
    PROCEDURE Resize
        ThisForm.Arrange
    ENDPROC
   
    PROCEDURE KeyPress(tnKeyCode, tnShiftAltCtrl)
        IF tnKeyCode == K_ESC
            RELEASE ThisForm
        ENDIF
    ENDPROC
   
    PROCEDURE Destroy
        CLEAR EVENTS
    ENDPROC 

ENDDEFINE



[ 本帖最后由 TonyDeng 于 2011-10-18 13:33 编辑 ]
搜索更多相关主题的帖子: 图片 扩展名 
2011-10-18 13:27
scilent
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:285
专家分:1399
注 册:2011-8-9
收藏
得分:0 
学习了

在没有路的地方走一条路,让别人有路可走
2011-10-18 16:00
apple0072011
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:249
专家分:989
注 册:2011-8-17
收藏
得分:0 
学习了,谢谢

天道酬勤
2011-10-18 16:10
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
哦,顺便说一下,这种内嵌图片的方式,是受限于VFP数据表规模的,即数据库文件不能大于2GB。

一般来说,没必要把图片嵌在数据库中,比如上面的程序,P02不用设计为备注型字段,用普通字符型记录图片文件名就可以了(此时下面的Image控件用Picture属性而非PictureVal),这样就不会受2GB的限制(当然你的单个图片也不可能大于2GB)。备注型字段有两个缺陷,一是分出一个.FPT文件,二是如果经常增删改这个字段内容的话则.FPT文件大小会迅速膨胀。因此,这种内嵌式的设计,应该用于固定的、不会修改的图片——上面为了上传方便起见把数据库也连编到.EXE中了。

授人以渔,不授人以鱼。
2011-10-18 16:20
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
收藏
得分:0 
不知为什么下载后,不能打开。
2011-10-19 07:45
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 5楼 panpende
要用VFP9运行库的,安装过VFP9的机器就可以,不然要下载运行库。

授人以渔,不授人以鱼。
2011-10-19 09:17
ivf
Rank: 1
等 级:新手上路
帖 子:66
专家分:2
注 册:2009-3-14
收藏
得分:0 
学习ing
2011-10-19 14:01
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
收藏
得分:0 
我已安装了9.0。我是说RAR文件打不开,报错。
2011-10-19 16:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
我说了这不是压缩文件,把.zip的扩展名删掉(改文件名就行了),那是没压缩的.EXE文件。

授人以渔,不授人以鱼。
2011-10-19 16:25
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
#INCLUDE "Const.h",很熟悉的语句。。。
vfp运行库,foxer爱好者永远的痛。

我们都在路上。。。。。
2011-10-20 11:33
快速回复:在VFP中显示图片的一个方法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040805 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved