visual foxpro n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Visual FoxPro 程序设计教程 PowerPoint Presentation
Download Presentation
Visual FoxPro 程序设计教程

Loading in 2 Seconds...

play fullscreen
1 / 43

Visual FoxPro 程序设计教程 - PowerPoint PPT Presentation


  • 156 Views
  • Uploaded on

Visual FoxPro 程序设计教程. 第 4 章. 选择结构程序设计. 4.1 条件表达式 ■ 关系运算符与关系表达式 ■ 逻辑运算符与逻辑表达式 ■ 运算符的优先顺序 4.2 条件选择语句 ■ 单条件选择语句 IF ■ 多分支条件选择语句 DO CASE 4.3 提供简单选择的控件 ■ 命令按钮组. ■ 选项按钮组 ■ 复选框 4.4 计时器与微调器 ■ 计时器 ■ 微调器 4.4 键盘事件 ■ KeyPress 事件 ■ 响应键盘事件. 4.1 条件表达式. 4.1.1 关系运算符与关系表达式.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Visual FoxPro 程序设计教程' - valentine-reilly


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide2
第 4章

选择结构程序设计

4.1条件表达式

■ 关系运算符与关系表达式

■ 逻辑运算符与逻辑表达式

■ 运算符的优先顺序

4.2条件选择语句

■ 单条件选择语句IF

■多分支条件选择语句DO CASE

4.3 提供简单选择的控件

■ 命令按钮组

■选项按钮组

■ 复选框

4.4计时器与微调器

■ 计时器

■ 微调器

4.4键盘事件

■KeyPress事件

■ 响应键盘事件

slide3

4.1 条件表达式

4.1.1 关系运算符与关系表达式

  • 关系运算符有8种:<、<=、>、>=、=、<>、#、
  • !=、$、= =

4.1.1 逻辑运算符与逻辑表达式

  • 逻辑运算符有3种:AND、OR、NOT

4.1.1 运算符的优先顺序

  • 运算符的优先顺序:算术运算符、字符串运算符、
  • 关系运算符、逻辑运算符

教学进程

slide4
4.2 条件选择语句

单条件选择语法结构:

IF〈条件〉

[语句列1]

[ELSE

[语句列2]]

ENDIF

教学进程

slide5

【例4-2】设计一个验证口令的表单。输入口令时文本框中只显示相同个数的“*”号,如图4-2所示。【例4-2】设计一个验证口令的表单。输入口令时文本框中只显示相同个数的“*”号,如图4-2所示。

设计步骤如下:

(1) 建立应用程序用户界面。

(2) 设置对象属性。

教学进程

3 4 3
(3) 编写程序代码。图4-3 建立界面与设置属性

●编写关闭按钮Command1的Click事件代码:THISFORM.Release

教学进程

slide7

●编写Text1的Valid事件代码:

THISFORM.Command1.TabStop = .F.

a = LOWER(THIS.Value)

IF a= "abcd "

THISFORM.Label1.Top = THIS.Parent.Top

THISFORM.Label1.Caption="欢迎使用本程序!"

THISFORM.Command1.TabStop = .T.

THIS.Parent.Visible = .F.

ELSE

MESSAGEBOX("对不起,口令错!请重新输入!",48,"口令")

THIS.SelStart=0

THIS.SelLength=LEN(RTRIM(THIS.Value))

ENDIF

教学进程

slide8

【例4-3】求函数值。输入x,计算y的值,其中:【例4-3】求函数值。输入x,计算y的值,其中:

设计步骤如下:

(1) 建立应用程序用户界面与设置对象属性。

(2) 编写程序代码。

根据流程图,可以写出命令按钮Command1的单击(Click)事件代码为:

教学进程

教学进程

slide9

x = THISFORM.Text1.Value

IF x >= 0

y = 4 * x

ELSE

y = 15 – 2 * x

ENDIF

THISFORM.Text1.SelStart = 0

THISFORM.Text1.SelLength= EN(THISFORM.Text1.Text)

THISFORM.Text1.SetFocus

THISFORM.Text2.Value = y

教学进程

教学进程

slide10

●使用IIF函数

IIf函数的语法结构为:

IIf(条件,真部分,假部分)

【例4-4】例4-3中命令按钮Command1的单击(Click)事件代码可以改为:

x = THISFORM.Text1.Value

y = IIF(x >= 0, 4 * x, 15 – 2 * x)

THISFORM.Text2.Value = y

THISFORM.Text1.SelStart = 0

THISFORM.Text1.SelLength=LEN(THISFORM.Text1.Text)

THISFORM.Text1.SetFocus

教学进程

slide11

●IF语句的嵌套

【例4-5】铁路托运行李,从甲地到乙地,规定每张客票托运费计算方法是:行李重量不超过50公斤时,每公斤0.25元,超过50公斤而不超过100公斤时,其超过部分每公斤0.35元,超过100公斤时,其超过部分每公斤0.45元。编写程序,输入行李重量,计算并输出托运的费用。

设计步骤如下:

(1) 建立应用程序用户界面与设置对象属性。

教学进程

slide12

(2) 编写程序代码。

根据流程图,可以写出命令按钮Command1的单击(Click)事件代码为:

w = THISFORM.Text1.Value

IF w <= 50

x = 0.25 * w

ELSE

IF w <= 100

x = 0.25 * 50 + 0.35 * (w – 50)

ELSE

x = 0.25 * 50 + 0.35 * 50 + 0.45 * (w – 100)

ENDIF

ENDIF

THISFORM.Text2.Value = x

THISFORM.Text1.SelStart = 0

THISFORM.Text1.SelLength = LEN(THISFORM.Text1.Text)

THISFORM.Text1.SetFocus

教学进程

slide13

【例4-6】某百货公司为了促销,采用购物打折扣的优惠办法:每位顾客一次购物【例4-6】某百货公司为了促销,采用购物打折扣的优惠办法:每位顾客一次购物

(1) 在1000元以上者,按九五折优惠。

(2) 在2000元以上者,按九折优惠。

(3) 在3000元以上者,按八五折优惠。

(4) 在5000元以上者,按八折优惠。

编写程序,输入购物款数,计算并输出优惠价。

设计步骤如下:

(1) 建立应用程序用户界面与设置对象属性。

教学进程

slide14

(2) 编写程序代码。

根据流程图,可以写出命令按钮Command1的单击(Click)事件代码为:

x = THISFORM.Text1.Value

IF x < 1000

y = x

ELSE

IF x < 2000

y = 0.95 * x

ELSE

IF x < 3000

y = 0.9 * x

ELSE

IF x < 5000

y = 0.85 * x

ELSE

y = 0.08 * x

ENDIF

ENDIF

ENDIF

ENDIF

THISFORM.Text2.Value = y

THISFORM.Text1.SelStart = 0

THISFORM.Text1.SelLength= LEN(THISFORM.Text1.Text)

THISFORM.Text1.SetFocus

教学进程

slide15

多分支条件选择语句DO CASE 语法结构

DO CASE

CASE〈条件1〉

[〈语句列1〉]

[CASE〈条件2〉

[〈语句列2〉]]

...

[OTHERWISE

[〈其他语句列〉]]

ENDCASE

slide16

【例4-7】在例4-6中使用DO CASE语句来计算优惠价,

只需将其中命令按钮Command1的Click事件代码改为:

x = THISFORM.Text1.Value

DO CASE

CASE x < 1000

y = x

CASE x < 2000

y = 0.95 * x

CASE x < 3000

y = 0.9 * x

CASE x < 5000

y = 0.85 * x

OTHERWISE

y = 0.08 * x

ENDCASE

THISFORM.Text2.Value = y

THISFORM.Text1.SelStart = 0

THISFORM.Text1.SelLength=LEN(THISFORM.Text1.Text)

THISFORM.Text1.SetFocus

教学进程

slide17

4.3 提供简单选择的控件

●使用命令按钮组

【例4-8】使用命令按钮组的程序。

设银行定期存款年利率为:1年期2.25%,2年期2.43%,

3年期2.70%,5年期2.88%(不计复利)。

今有本金x元,5年以后使用,共有以下6种存法:

l存一次5年期。

l存一次3年期,一次2年期。

l存一次3年期,两次1年期。

l存两次2年期,一次1年期。

l存一次2年期,三次1年期。

l存五次1年期。

分别计算各种存法5年后到期时的本息合计,如图4-12所示。

教学进程

slide18

设计步骤如下:

(1) 建立应用程序用户界面。

(2) 设置对象属性。

(3) 编写程序代码。

● 编写表单的Activate事件代码:

THIS.Text1.SetFocus

● 编写命令按钮组Commandgroup1的Click事件代码:

a = THISFORM.Text1.Value

x1 = 0.0225

x2 = 0.0243

x3 = 0.027

x5 = 0.0288

n = THIS.Value

教学进程

slide19

DO CASE

CASE n = 1

mes = "存1次5年期"

y = (1 + 5 * x5) * a

CASE n = 2

mes = "存1次3年期,1次2年期"

y = (1 + 3 * x3) * (1 + 2 * x2) * a

CASE n = 3

mes = "存1次3年期,2次1年期"

y = (1 + 3 * x3) * (1 + x1)^2 * a

CASE n = 4

mes = "存2次2年期,1次1年期"

y = (1 + 2 * x2)^2 * (1 + x1) * a

CASE n = 5mes = "存1次2年期,3次1年期"

y = (1 + 2 * x2) * (1 + x2)^3 * a

CASE n = 6

mes = "存5次1年期"

教学进程

slide20

y = (1 + x1)^5 * a

ENDCASE

mes = ALLT(STR(a)) + “元” + mes + CHR(13) + “到期时,

本息共计:" + ALLT(STR(y,12,2)) + "元"

MESSAGEBOX(mes, 0 , "利息计算")

教学进程

slide21

●选项组与选项组生成器

【例4-9】利用选项组控制例4-8中存款利息的计算,如图4-16。

设计步骤如下:

(1) 建立应用程序用户界面

(2) 设置对象属性。

(3) 编写程序代码。

● 编写表单的Activate事件代码:

THIS.Text1.SetFocus

●编写选项按钮组OptionGroup1的Click事件代码:

教学进程

slide22

a = THISFORM.Text1.Value

x1 = 0.0225

x2 = 0.0243

x3 = 0.027

x5 = 0.0288

n = THIS.Value

DO CASE

CASE n = 1

mes = "存1次5年期"

y = (1 + 5 * x5) * a

CASE n = 2

mes = "存1次3年期,1次2年期"

y = (1 + 3 * x3) * (1 + 2 * x2) * a

CASE n = 3

教学进程

slide23

mes = "存1次3年期,2次1年期"

y = (1 + 3 * x3) * (1 + x1)^2 * a

CASE n = 4

mes = "存2次2年期,1次1年期"

y = (1 + 2 * x2)^2 * (1 + x1) * a

CASE n = 5

mes = "存1次2年期,3次1年期"

y = (1 + 2 * x2) * (1 + x2)^3 * a

CASE n = 6

mes = "存5次1年期"

y = (1 + x1)^5 * a

ENDCASE

mes = mes + ",本息共计:"+ALLT(STR(y,12,2))+"元"

THISFORM.Label3.Caption = mes

教学进程

slide24

【例4-10】利用选项组控制文本的对齐方式与字体,如图4-18。【例4-10】利用选项组控制文本的对齐方式与字体,如图4-18。

设计步骤如下:

(1)建立应用程序用户界面。

(2)设置对象属性。

(3)编写程序代码。

●编写表单的Activate事件代码:

THIS.Text1.SetFocus

●编写OptionGroup1的Click事件代码:

n = THIS.Value

DO CASE

CASE n = 1

THISFORM.Text1.Alignment = 0

CASE n = 2

THISFORM.Text1.Alignment = 2

CASE n = 3

THISFORM.Text1.Alignment = 1

ENDCASE

教学进程

slide25

●编写OptionGroup2的Click事件代码:

n = THIS.Value

DO CASE

CASE n = 1

THISFORM.Text1.FontName = "宋体"

CASE n = 2

THISFORM.Text1.FontName = "隶书"

CASE n = 3

THISFORM.Text1.FontName = "黑体"

CASE n = 4

THISFORM.Text1.FontName = "楷体_GB2312"

ENDCASE

教学进程

slide26

●选项组的图形方式

【例4-11】修改上例中的选项组成图形按钮的形式,如图4-21。

设计步骤同上例,只介绍选项组的修改方法。

与修改命令按钮组类似,可以在“选项组生成器”中对各个选项按钮进行修改。下面我们通过属性窗口对选项按钮进行修改。

用鼠标右键单击选项组OptionGroup1,在弹出菜单中选择“编辑”,OptionGroup1的四周出现浅色边界,开始对选项组(容器)中的按钮进行编辑。

依次选中三个按钮Option1~Option3,将其标题(Cpation)属性改为:(空),自动大小(AutoSize)属性改为:.F. – 假,图片(Picture)属性通过浏览按钮“…”进行查找,并分别改为:

教学进程

slide27

\program\files\microsoft\visualstudio\common\graphics\bitmaps\tlbr_w95\lft.bmp\program\files\microsoft\visualstudio\common\graphics\bitmaps\tlbr_w95\lft.bmp

\program\files\microsoft\visualstudio\common\graphics\bitmaps\tlbr_w95\ctr.bmp

\program files\microsoft\visual studio\common\graphics\bitmaps \tlbr_w95\rt.bmp

最后适当调整按钮的大小与相互位置。与之相仿可以将选项组OptionGroup1改为图形方式,如图4-22所示。

教学进程

slide28

●使用复选框

1、使用单个复选框

【例4-12】在上例中,增加复选框,控制选项组是否显示,如图4-23所示。

图4-23 利用复选框控制控件的显示

slide29

设计步骤同上例,只列出增加的部分。

(1) 增加一个复选框控件Check1。

(2) 修改Check1的属性:

AutoSize 属性改为:.T. – 真

标题(Caption)改为:修改

值(Value)改为:.T.

(3) 编写Check1的Click事件代码:

THISFORM.OptionGroup1.Visible = THIS.Value

THISFORM.OptionGroup2.Visible = THIS.Value

slide30

2、使用多个复选框

【例4-13】利用复选框来控制输入或输出文本的字体风格,如图4-24所示。

图4-24 控制字体风格

slide32

设计步骤如下:

(1) 选择新建表单,进入表单设计器,增加一个形状控件

Shape1、一个文本框控件Text1、一个标签控件Label1以及三个复选框控件Check1、Check2和Check3。

(2) 设置对象属性。

(3) 编写事件代码。

●编写表单的Activate事件代码:

THIS.Text1.SetFocus

●编写Check1的Click事件代码:

THISFORM.Text1.FontBold = THIS.Value

●编写Check2的Click事件代码:

THISFORM.Text1.FontItalic = THIS.Value

●编写Check3的Click事件代码:

THISFORM.Text1.FontUnderLine = THIS.Value

slide33

3、复选框的图形按钮方式

【例4-14】图形按钮形式的复选框,如图4-25。单击锁定按钮关闭其他复选框,单击修改按钮则开放其他复选框。

图4-25 使用图形按钮形式的复选框

slide34

设计步骤如下:

(1) 选择新建表单,进入表单设计器,首先增加一个形状控件Shape1,然后在其上增加一个文本框控件Text1、一个标签控件Label1以及五个复选框控件Check1、Check2、Check3、Check4和Check5(参见图4-26)。

图4-26 设计按钮形式的复选框

(2) 修改控件属性。

slide35

(3) 编写事件代码。

●编写Check1的Click事件代码:

THISFORM.Text1.FontBold = THIS.Value

●编写Check2的Click事件代码:

THISFORM.Text1.FontItalic = THIS.Value

●编写Check3的Click事件代码:

THISFORM.Text1.FontUnderLine = THIS.Value

●编写Check4的Click事件代码:

THISFORM.Text1.FontStrikethru = THIS.Value

●编写Check5的Click事件代码:

THISFORM.SetAll("Enabeld",THIS.Value,"CheckBox")

THIS.Enabeld=.T.

THIS.Caption=IIF(THIS.Value=1,"\<R 锁定","\<R 修改")

slide36

4.4计时器与微调器

●使用计时器

1、计时器的计时功能

【例4-15】在表单上设计一个数字时钟,如图4-28所示。

图4-28 数字时钟

slide37

设计步骤如下:

(1) 建立应用程序用户界面。

(2) 设置属性。

(3) 编写程序代码。

● 编写表单的Activate事件代码:

SET HOURS TO 12

●编写OptionGroup1的InteractiveChange事件代码:

IF THIS.Value=2

SET HOURS TO 12

THISFORM.Container1.Label1.Visible=.T.

ELSE

SET HOURS TO 24

THISFORM.Container1.Label1.Visible=.F.

ENDIF

slide38

●编写Timer1的Timer事件代码:

IF HOUR(DATETIME())>=12

THIS.Parent.Label1.Caption='下午'

ELSE

THIS.Parent.Label1.Caption='上午'

ENDIF

THIS.Parent.Text1.Value=SUBSTR(TTOC(DATETIME()),10,8)

slide39

2. 计时器的动感控制

【例4-16】设计一个电子游动标题板,标题“使用VFP设计动画”在表单的黄色区域(容器中)自右至左地反复移动。单击“暂停”按钮,标题停止移动,按钮变成“继续”。 单击“继续”按钮,标题继续移动,按钮又变回“暂停”(如图4-29所示)。

图4-29 电子标题板

slide40

设计步骤如下:

(1) 建立应用程序用户界面。

(2) 设置对象属性。

(3) 编写程序代码。

●编写Command1(开始/暂停)的Click事件代码:

IF THIS.Caption = "\<S 暂停"

THIS.Caption = "\<S 继续"

THISFORM.Container1.Timer1.Enabled = .F.

ELSE

THIS.Caption = "\<S 暂停"

THISFORM.Container1.Timer1.Enabled = .T.

ENDIF

●编写Timer1的Timer事件代码:

IF THIS.Parent.Label1.Left + THIS.Parent.Label1.Width > 0

THIS.Parent.Label1.Left = THIS.Parent.Label1.Left – 3

ELSE

THIS.Parent.Label1.Left = THIS.Parent.Width

ENDIF

slide41

●使用微调器

【例4-17】使用微调器改变例4-16中标题板的移动速度。

设计步骤同例4-16。此外,增加一个微调器控件Spinner1、一个标签和一个形状。如图4-31所示。

●编写Spinner1的InteractiveChange事件代码:

THISFORM.Container1.Timer1.Interval = 100 - 10 * THIS.Value

4-31 增加一个Spinner1

slide42

4.5 键盘事件

● KeyPress事件的语法为:

LPARAMETERS nKeyCode, nShiftAltCtrl

● 响应键盘事件

【例4-18】自动判断按键的程序。按下〈Enter〉键立刻开始计算面积(如图4-32)。

图4-32 自动判断按键

slide43

修改例3-4,删去窗体中的命令按钮及其事件代码,并增加事件代码如下:修改例3-4,删去窗体中的命令按钮及其事件代码,并增加事件代码如下:

● 编写文本框Text1的按键(KeyPress)事件代码:

LPARAMETERS nKeyCode, nShiftAltCtrl

if nkeycode=13

a = thisform.Text1.Value

thisform.Text2.Value = a^2 * 3.14

thisform.Text1.SelStart = 0

thisform.Text1.SelLength = len(thisform.Text1.Text)

thisform.Text1.SetFocus

endif