Vfp 文档 一些经典编程文章 可供初学者学习编程时使用

源代码在线查看: 统计图在vfp中的实现.txt

软件大小: 265 K
上传用户: xiao11tian
关键词: Vfp 编程 文档 初学者
下载地址: 免注册下载 普通下载 VIP

相关代码

				实用技巧 
				
				谈 动 态 统 计 图 在VFP 中 的 实 现 
				河 南 万 宝 股 份 有 限 公 司 电 算 中 心 
				梁 宏 
				( 请 作 者 和 我 们 联 系) 
				---- 计 算 机 世 界 报1998 年 第7 期I3 版 刊 出 了《 动 态 统 计 图 在VFP 中 的 实 现》 一 文。 文 中 作 者 给 出 了 通 过 调 用 以 下 方 法 实 现 动 态 出 图: 
				
					   DO (_GENGRAPH) WITH (PARM1),(PARM2),...(PARM9)
				---- 由 于_GENGRAPH 是VFP 的 系 统 变 量, 它 其 实 就 是 指 向WZGRAPH.APP, 也 就 是 说 该 方 法 实 质 上 就 是 通 过 调 用VFP 附 带 的 向 导 例 程 来 工 作。 
				---- 利 用 该 方 法 确 实 能 够 实 现 统 计 图 的 生 成, 但 非 常 遗 憾 的 是 该 方 法 只 能 运 行 在VFP 的" 怀 抱" 中, 一 旦 脱 离 了VFP 的 开 发 环 境, 你 得 到 的 不 再 是 统 计 图 形 而 是 一 条 错 误: 只 有 在 开 发 环 境 中 才 能 使 用 本 功 能 ! 很 显 然, 这 种 方 法 极 不 实 用, 我 们 总 不 能 把 自 己 开 发 的 软 件 和VFP.EXE 一 块 发 行 给 我 们 的 用 户 吧 ? 
				
				---- 统 计 图 以 其 形 象 直 观, 界 面 友 好 而 让 我 们 的 用 户 深 爱 不 已, 但 如 何 在 我 们 的 程 序 中 实 现 自 由 的 动 态 图 形 生 成 呢 ? 下 面 笔 者 给 出 本 人 精 心" 制 造" 的" 零 件"----- 自 动 统 计 图 生 成 类: h3> 一、" 零 件" 加 工: 
				
				---- 自 定 义 一 个 基 类 为"CUSTOM " 的 自 定 义 类: "LHGENGRAPH", 为 其 添 加 下 列 属 性: 
				---- AutoRefresh : 值 为 .T., 作 用: 控 制 新 生 成 图 形 是 否 刷 新 原 图 形 格 式. 
				---- HasLegend : 值 为 .T., 作 用: 控 制 图 形 是 否 有" 图 例". 
				---- MainType : 值 为 0, 作 用: 选 定 生 成 图 形 的 主 类 型 号 
				---- SaveTable : 值 为 空 , 作 用: 用 来 指 定 生 成 图 形 的 存 放 表, 要 求 该 表 须 有GEN 类 型 字 段. 
				---- SubType : 值 为 0, 作 用: 选 定 生 成 图 形 的 次 类 型 号( 值 为 零 为 自 动 选 择). 
				---- Title : 值 为" 梁 先 生", 作 用: 生 成 图 形 的 标 题.( 如 为 空 则 无 标 题). 
				---- WorkTable : 值 为 空, 作 用: 指 定 统 计 数 据 的 来 源. 要 求 该 表 的 第 一 列( 最 左 列) 为 统 计 的X 轴( 中 时 间, 部 门 等). 
				
				---- 为 该 类 添 加 以 下 方 法: 
				---- LhGenGraph 作 用: 调 用 该 方 法 即 可 自 动 生 成 统 计 图 形. 
				---- GetRecVAl 作 用: 由LhGenGraph 方 法 调 用. 取 得 记 录 值. 
				---- 以 下 为LhGenGraph 方 法 的 具 体 内 容: 
				
				*--         动态统计图生成
				*--         单位:河南万宝股份有限公司 电算中心
				*--         作者:梁宏  
				
				LOCAL lcWorktable,lcSavetable,lcTitle,
				     llAutogen,llLegend,lnMtype  , lnStype
				*--        工作表,保存表,图表标题,自动刷新 ,
				           图例 ,图形主格式,图形子格式
				lcWorktable=THIS.WorkTable
				lcSavetable=THIS.SaveTable
				lcTitle    =THIS.Title
				llAutogen  =THIS.AutoRefresh
				llLegend   =THIS.HasLegend
				lnMtype    =THIS.MainType
				lnStype    =THIS.Subtype
				IF ISBL(lcWorktable) .OR. ISBL(lcSavetable)
				   =MESSAGEBOX("请先指定工作表和产生图形回存表!",
				    64,"梁宏提示:")
				   RETU
				ENDIF
				#DEFINE CRLF CHR(13)+CHR(10)
				#DEFINE TAB CHR(9)
				LOCAL lnCursele,lcData,lnFnumber,lLoop,llOpenwTable,
				      llOpensTable,;
				      lnWcurrec,loForm,LHole,lcFieldval,lcFname
				lnCursele=SELE()
				llOpenwTable=.T.
				llOpensTable=.T.
				IF USED("&lcWorktable")
				   SELE &lcWorktable
				   llOpenwTable=.F.
				ELSE
				   SELE 0
				   USE &lcWorktable
				ENDIF    
				lnWcurrec=RECN()
				lnFnumber=FCOUNT()
				IF lnFnumber< 2
				   =MESSAGEBOX("工作表最少应包含两个字段!",
				    64,"梁宏提示:")
				   RETU
				ENDIF   
				lcData=" "+TAB
				FOR lLoop=2 TO lnFnumber   && 取字段名
				    lcData=lcData+FIELD(lLoop)
				    IF !EMPTY(FIELD(lLoop+1))
				       lcData=lcData+TAB
				    ENDIF
				ENDFOR
				lcData=lcData+CRLF
				GO TOP
				SCAN
				     FOR lLoop=1 to lnFnumber
				         lcFieldval=THIS.GetRecVal(FIELD(lLoop))
				         IF lLoop<  >lnFnumber
				            lcData=lcData+lcFieldval+TAB
				         ELSE
				            lcData=lcData+lcFieldval+CRLF
				         ENDIF   
				     ENDFOR     
				ENDSCAN
				IF llOpenwTable
				   USE
				ELSE
				   GO lnWcurrec
				ENDIF      
				IF USED("&lcSavetable")
				   SELE &lcSavetable
				   llOpensTable=.F.
				ELSE
				   SELE 0
				   USE &lcSavetable
				ENDIF    
				IF RECC()=0
				   APPE BLANK
				ENDIF   
				lnFnumber=FCOUNT()
				FOR lLoop=1 TO lnFnumber+1
				    IF TYPE(FIELD(lLoop))="G"
				       EXIT
				    ENDIF
				ENDFOR       
				IF lLoop >lnFnumber
				   =MESSAGEBOX("指定的保存表中不含有<  通用  >字段,
				    因此无法生成图表",64,"梁宏提示:")
				   RETU
				ENDIF
				lcFname=FIELD(lLoop)   
				IF llAutogen
				   APPEND GENERAL &lcFname DATA lcData  
				    CLASS "MSGRAPH.CHART"
				ELSE
				   APPEND GENERAL &lcFname DATA lcData  
				ENDIF   
				loForm=CREATEOBJECT("FORM")
				loForm.ADDOBJECT("LHole","OLEBOUNDCONTROL")
				loForm.LHole.STRETCH=2
				lcCsource=lcSavetable+"."+lcFname
				loForm.LHole.CONTROLSOURCE=lcCsource
				loForm.LHole.HEIGHT= _SCREEN.HEIGHT
				loForm.LHole.WIDTH=_SCREEN.WIDTH 
				lcError=ON("ERROR")
				ON ERROR APPEND GENERAL &lcFname
				     DATA lcData CLASS  "MSGRAPH.CHART"
				loForm.LHole.HasLegend=llLegend
				IF ISBL(lcTitle)
				   loForm.LHole.HasTitle = .F.
				ELSE
				   loForm.LHole.HasTitle = .T.   
				   loForm.LHole.ChartTitle.Caption = lcTitle
				ENDIF   
				IF lnMtype<  >0 .AND. lnStype<  >0
				   loForm.LHole.AutoFormat(lnMtype,lnStype)
				ENDIF   
				IF !ISBL(lcError)
				   ON ERROR &lcError
				ELSE
				   ON ERROR
				ENDIF      
				loForm.RELEASE
				* FLUSH
				IF llOpensTAble
				   USE
				ENDIF   
				SELE (lnCURSELE)
				
				以下为GetRecVAl 方法的具体内容:
				
				*--          转换字段值
				LPARAMETER lcFieldname,lcFval,lcFtype
				lcFieldname=&lcFieldname
				lcFtype=TYPE("lcFieldname")
				DO CASE
				   CASE lcFtype="D"
				        lcFval=DTOC(lcFieldname) 
				   CASE lcFtype="C"
				        lcFval=ALLT(lcFieldname) 
				   CASE lcFtype="T"
				        lcFval=TTOC(lcFieldname) 
				   OTHERWISE
				        lcFval=ALLT(STR(lcFieldname))
				ENDCASE
				RETU  lcFval
				二、 应 用 指 南: 
				---- 你 可 以 将 本 类 加 入 到 你 的 表 单 上( 比 如 对 象 名 为LHGENGRAPH1), 再 加 入 一 个 按 钮 用 以 触 发LHGENGRAPH 的LHGENGRAPH 方 法。 当 然 你 需 要 给LHGENGRAPH1 提 供 至 少 两 个 参 数, 那 就 是WorkTable 和SaveTAble, 即 工 作 表 和 图 形 生 成 回 存 表。 要 得 到 这 两 个 表 其 实 很 简 单, 只 需 用SELE 语 句 选 定 你 需 要 进 行 统 计 分 析 的 数 据 列 和 用CREATE TABLE 命 令 创 建 一 个 含 有GEN 类 型 字 段 的 表 即 可。 将SaveTable 的GEN 字 段 拖 放 到 表 单 形 成OLEBOUNDCONTROL 对 象( 该 对 象 即 为 生 成 的 统 计 图 形)。 调 整 该 对 象 大 小 及 属 性 至 满 意。 在 此, 提 供 一 个 技 巧: 运 行 表 单, 双 击OLEBOUNDCONTROL 对 象 进 入 编 辑 状 态, 调 整 该 图 形 的 背 景 等 属 性, 比 如 背 景 填 充 为" 大 理 石" 面 等, 退 出 编 辑 状 态 后, 将LHGENGRAPH1 的AUTOREFRESH 属 性 设 为.F., 以 后 再 刷 新 该 图 形 时 将 采 用 你 调 整 好 的 格 式。 这 样, 你 就 可 以 得 到 一 个 十 分 优 美 的 统 计 图 形 了。 更 让 人 兴 奋 的 是 本 功 能 即 使 脱 离VFP 开 发 环 境 仍 然 是 运 转 自 如。 你 完 全 可 以 将 她 集 成 到 你 的EXE 文 件 中 发 行 给 你 的 用 户。 注 意 在 生 成" 安 装" 时, 应 该 选 中MSGRAPH 选 项。    免 费 订 阅  
				实用技巧分类
				 
				Office应用 
				CAD 
				C、C++ 
				数据库应用 
				Delphi  
				Internet应用 
				Java 
				Notes应用 
				操作系统应用 
				PowerBuilder 
				VB 
				Visual Foxpro 
				其他类 
				上周 排行榜 
				如 何 投 稿 ? 
				
				 
				
				在日常的工作生活中,我们对计算机软硬件技术的应用开发肯定有许多的心得体会,拿来和众人分享:让别人得到他们想要的,使自己找到苦苦寻觅的;小的点点滴滴,大的工程系统,这里都需要。投稿 的关键在“技巧”二字,知他人所不知,这样的稿件本栏最最欢迎! 大家公认的 好文章自然会有好的奖励。希望每个人在这里都有所收获... 
				
				
				  中国惠普
				  3Com中国
				  Motorola中国
				  CA中国
				  Cabletron
				  Sony在中国
				  西门子WinCC
				  爱普生中国
				  中国建设银行
				  德州仪器(TI)
				  问博医药
				
				 
				 
				
				--------------------------------------------------------------------------------
				
				
							

相关资源