VFP9的10件酷事(10)--为了能使用户更好的对数据类型进行控制

shanjuhua 2004-10-27 09:31:57
10、 为了能使用户更好的对数据类型进行控制
VFP增加了CAST()函数, 无论是作为单独的函数使用还是内嵌入SQL语句中他都可以对不同的数据类型进行转换,他很简单,这似乎难以置信,不过在应用情况下它却是非常的强大。 SELECT unit_price, ;
CAST(unit_price AS Integer) AS IntPrice, ;
CAST(unit_price AS N(12,6)) AS NumPrice ;
FROM (_samples+"tastrade\data\products")

11、 超级SYS(1037,1)
USE report1.frx
SYS(1037,1) &&自动读取report1.frx里面的打印环境
确定一下看看,**!
SYS(1037,1)的设置自动保存到report1.frx里面呢
哎,红雨的打印设置表单又白做呢

12、 在WITH … ENDWITH 和FOR EACH … ENDFOR中支持智能感应
为在WITH ... ENDWITH 和FOR EACH ... ENDFOR中支持IntelliSense,这两个命令的语法格式增加了AS Type子句,如下所示:
WITH ObjectName [AS Type [OF ClassLibrary]]
Commands
ENDWITH
FOR EACH ObjectName [AS Type [OF ClassLibrary]] IN Group
Commands
[EXIT]
[LOOP]
ENDFOR
Type 可以引用任何有效类型,包括数据类型、类类型或ProgID,如果类名称无法找到,Visual FoxPro将忽略该类名称并不显示IntelliSense。
注意:Type引用不影响运行时应用程序的实际功能,这种引用仅是为了使用IntelliSense。ObjectName 表达式可以引用一个内存变量或数组。
ClassLibrary参数指定的类库需要在可以被Visual FoxPro发现的路径中,如果指定的类库不能发现,IntelliSense不显示。
输入特定的ProgIDs和类库不需要引号围住它们,除非在名称中包含有空格。当输入了一个关键词, IntelliSense将显示一个在FoxCode (Type="T")中注册的类型列表。如果指定了一个有效类型,在WITH ... ENDWITH 或FOR EACH ... ENDFOR中输入一个圆点,将显示对于该对象的IntelliSens。
必须指定一个有效类库,对已存在对象引用则无效,例如下面的语句不支持IntelliSense:
WITH THISFORM AS APPLICATION
ENDWITH
WITH THISFORM AT THIS
ENDWITH
有效的书写方式如下:
WITH This AS Form &&在一个表单事件中书写
.Caption="标题"
ENDWITH
又如:
WITH This.Pageframe1.Page1 AS Page
.Caption="页框1"
ENDWITH
Visual FoxPro支持嵌套WITH ... ENDWITH和FOR EACH ... ENDFOR命令,下面是在一个叫Program1.prg的.prg中定义类中的嵌套WITH ... ENDWITH命令。在做这个示例前,首先需要在磁盘中保存一下Program1.prg文件,然后重新打开,可以在WITH和ENDWITH之间输入一个圆点,然后就可以看见IntelliSense,如图5所示。
DEFINE CLASS f1 AS form
MyVar1 = 123
ADD OBJECT t1 AS mytext
PROCEDURE Init
WITH THIS AS f1 OF program1.prg
WITH .t1 AS mytext OF program1.prg
ENDWITH
ENDWITH
ENDPROC
ENDDEFINE
DEFINE CLASS mytext as textbox
MyVar2 = 123
ENDDEFINE

13、 报表可以有多个细节区了



14、 控件的Anchor属性
Anchor属性的意思,它有0-9十种值,各自代表的意思如下:
以下是我做测试的结果:
DH:表单高度的增量
DW:表单宽度的增量
测试过程:用代码把按钮的left和top各加80,长和高各加10后,再调整表单大小,再观察按钮的位置和大小
old值
oldtop=50
oldleft=50
oldheight=27
oldwidth=84
new值
newtop=130
newleft=130
newheight=37
newwidth=94
0:NULL
1:height和top变回old值,left和width为130和94(而且在再度移动按钮位置和改变大小前,再调整表单,按钮不再受影响)
2:和1相反,是left和width变回old值,height和top为37、130(而且在再度移动按钮位置和改变大小前,再调整表单,按钮不再受影响)
3:left、top、height、width都变为原来的值
4:height为oldheight,width、left为new值,top为oldtop+DH,即保持和表单底部的距离保持在设计阶段的值
5:top为oldtop,left、width为new值,height为oldheight+DH,即表单的高度增加多少,控件的高度也增加多少
6:left、width、height均为old值,只是height为oldheight+DH,即表单的高度增加多少,控件的高度也增加多少
7:top、left、widht均为OLD值,只是height为oldheight+DH,即表单的高度增加多少,控件的高度也增加多少
8:top、height均为new值,width就为old值,left就是oldleft+DW,就是控件保持和表单右边的距离不变
9:top、height、width均为old值,left就是oldleft+DW,就是控件保持和表单右边的距离不变
注意:它的十个可用的值要加起来用的,比如,现在我有一个Listview,我要让它在表单缩放时,Top和left保持不变,右边界和底部边界跟随表单一起缩放,那么就要用到Anchor中的四个值:
1——顶部绝对,即距表单顶部的距离保持不变;
2——左边绝对,即距表单左边的距离保持不变;
4——底部绝对,即距表单底部的距离保持不变;
8——右边绝对,即距表单右边的距离保持不变;
现在,把Listview的anchor设置为15(1+2+4+8),缩放表单时Listview就跟着自动缩放了。

15、 自定义Memo编辑窗口
textbox.openwindow=.t.
textbox.memowidow="窗口名"
二个属性的意思是:
如果这个textbox是关联到一个memo字段时,双击这个控件,会自动跳到memowindow中指定的窗口中去。条件是该窗口必须事先打开。
用此功能我们可以自定义Memo编辑窗口,而不是使用默认的那个土土的。
16、 画多边形
Shape和Line控件的PolyPoint属性用来画多边形
定义一个二维数组,(x,y)代表每个顶点的x,y值,然后把数组名放进PolyPoint属性,这二个控件就会画一个多边形了,还可以使用Rotation进行旋转。但此时只能是Plain而不能是3D了。
比如:
DIMENSION poly[5,2]
poly[1,1]= 0
poly[1,2]= 50
poly[2,1]= 50
poly[2,2]= 100
poly[3,1]= 100
poly[3,2]= 50
poly[4,1]= 50
poly[4,2]= 0
poly[5,1]=0
poly[5,2]=50
这个数组就会画一个菱形
17、
18、 q
19、 q
20、 q
21、






VFP9.0Bata 新增的98個函數和命令

(3)
_MEMBERDATA
_MENUDESIGNER
_REPORTBUILDER

A (12)
ADJUSTOBJECTSIZE
AFTERBAND
AFTERRECORDREFRESH
AFTERREPORT
ALLOWMODALMESSAGES
ANCHOR
APPSTATE
ASQLHANDLES
AUTOCOMPLETE
AUTOCOMPSOURCE
AUTOCOMPTABLE
AUTOHIDESCROLLBAR

B (4)
BEFOREBAND
BEFORERECORDREFRESH
BEFOREREPORT
BLOB

C (9)
CANCELREPORT
CAST
CLEARRESULTSET
CLEARSTATUS
COMMANDCLAUSES
CONFLICTCHECKCMD
CONFLICTCHECKTYPE
CURRENTDATASESSION
CURRENTPASS

D (6)
DECLAREXMLPREFIX
DELAYEDMEMOFETCH
DOCKABLE
DOMESSAGE
DOSTATUS
DYNAMICLINEHEIGHT

E (1)
EVALUATECONTENTS

F (6)
FETCHMEMOCMDLIST
FETCHMEMODATASOURCE
FETCHMEMODATASOURCETYPE
FIRSTNESTEDTABLE
FRXCURSOR
FRXDATASESSION

G (5)
GDIPLUSGRAPHICS
GETAUTOINCvalue
GETDOCKSTATE
GETPAGEWIDTH
GETRESULTSET

H (0)

I (6)
ICASE
INCLUDEPAGEINOUTPUT
INSERTCMDREFRESHCMD
INSERTCMDREFRESHFIELDLIST
INSERTCMDREFRESHKEYFIELDLIST
ISMEMOFETCHED

J (0)

K (0)

L (2)
LISTENERTYPE
LOADREPORT

M (2)
MAPBINARY
MAPVARCHAR

N (3)
NEST
NESTEDINTO
NEXTSIBLINGTABLE

O (3)
ONPREVIEWCLOSE
ORDERDIRECTION
OUTPUTPAGE

P (6)
PAGENO
PAGETOTAL
PICTUREMARGIN
PICTURESPACING
POLYPOINTS
PREVIEWCONTAINER

Q (1)
QUIETMODE

R (11)
RECORDREFRESH
REFRESHALIAS
REFRESHCMD
REFRESHCMDDATASOURCE
REFRESHCMDDATASOURCETYPE
REFRESHIGNOREFIELDLIST
REFRESHTIMESTAMP
RENDER
REPORTLISTENER
RESPECTNESTING
ROTATION

S (6)
SELECTIONNAMESPACES
SENDIMAGEINFO
SESSIONDATA
SETRESULTSET
SQLIDLEDISCONNECT
SUPPORTSLISTENERTYPE

T (2)
TIMESTAMPFIELDLIST
TWOPASSPROCESS

U (7)
UNLOADREPORT
UPDATECMDREFRESHCMD
UPDATECMDREFRESHFIELDLIST
UPDATECMDREFRESHKEYFIELDLIST
UPDATESTATUS
USECODEPAGE
USECURSORSCHEMA

V (2)
VARBINARY
VARCHAR

W (0)

X (1)
XMLNAMEISXPATH

Y (0)

Z (0)


...全文
93 2 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
JohnShen 2004-10-27
  • 打赏
  • 举报
回复
以前看过E文的,现在又看了一遍,vfp9正式版,期待中。。。
不知道推出来没有。
shanjuhua 2004-10-27
  • 打赏
  • 举报
回复
我想删除,但没这个权利。
发帖
VFP

2579

社区成员

VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
帖子事件
创建了帖子
2004-10-27 09:31
社区公告
暂无公告