ePx Studio 7.2 常用语法学习真实经典案例

1、 使用控件属性作为判断条件:

1 ……
2 if RadioButton2.Checked then
3 begin
4 Statement := this.Replace( Statement,‘varchar‘,‘varchar2‘ );
5 Statement := this.Replace( Statement,‘int‘,‘number‘ );
6 end;
7 ……

2、 使用控件 Items 集合数量控制循环次数,同时循环与判断相嵌套:

 1 ……
 2 CheckCount := 0;
 3 for I := 0 to CheckListBox1.Items.Count - 1 do
 4 begin
 5 if CheckListBox1.Checked[ I ] then
 6 begin
 7 CheckCount := CheckCount + 1;
 8 end;
 9 end;
10 if CheckCount = 0 then
11 begin
12 this.ShowMessage(‘没有选择任何需要导入的数据表定义,不能继续操作! ‘);
13 Exit;
14 end;
15 ……

3、 循环与判断综合嵌套应用:

 1 ……
 2 if CanContinue then
 3 begin
 4     TableList := TStringList.Create;
 5     ViewContent := ‘‘;
 6     TableWantDealed := False;
 7     TableIndex := 0;
 8     ProgressBar1.Max := Contents.length;
 9     ProgressBar1.Position := 0;
10     for I := 0 to Contents.length - 1 do
11         beginProgressBar1.Position := I + 1;
12         this.ProcessMessage;
13         Item := Contents.get( I );
14         TableName := VarToStr( Item.get( ‘表名‘ ) );
15     if TableList.IndexOf( TableName ) < 0 then
16     begin
17         //向系统表定义插入一行,并创建一张表
18     if Length( ViewContent ) > 0 then
19     begin
20     //创建视图
21     if TableWantDealed then
22     begin
23         CreateSingleView( ViewContent,LastTableName,EnTable,EnView );
24     end;
25     ViewContent := ‘‘;
26     end;
27     //创建表定义及表
28     TableIndex := TableIndex + 1;
29     TableWantDealed := False;
30     ItemIndex := CheckListBox1.Items.IndexOf( TableName );
31     if ItemIndex >= 0 then
32     begin
33         TableWantDealed := CheckListBox1.Checked[ ItemIndex ];
34         CheckListBox1.ItemIndex := ItemIndex;
35     end;
36     if TableWantDealed then
37     begin
38         AddAndCreateSingleTable( Item,TableIndex,TableName,EnTable,EnView );
39         this.PlaySoundRes( 0 );
40     end;
41     LastTableName := TableName;
42     TableList.Add(TableName);
43     end;
44     EnName := Trim( VarToStr( Item.get( ‘代码‘ ) ) );
45     CnName := Trim( VarToStr( Item.get( ‘中文名‘ ) ) );
46     DispNm := Trim( VarToStr( Item.get( ‘显示用名‘ ) ) );
47     if Length( DispNm ) = 0 then DispNm := CnName;
48     if Length( DispNm ) = 0 then DispNm := EnName;
49     Item.set( ‘显示用名‘,DispNm );
50     //添加列定义
51     if TableWantDealed then
52     begin
53         AddSingleColumnDefine( Item, TableName, EnTable,EnView );
54     end;
55     if Length(ViewContent) > 0 then ViewContent := ViewContent + ‘,‘;
56     ViewContent := ViewContent + EnName + ‘ "‘ + DispNm + ‘"‘;
57     end;
58     if Length( ViewContent ) > 0 then
59     begin
60         //创建视图
61     if TableWantDealed then
62     begin
63         CreateSingleView( ViewContent,LastTableName,EnTable,EnView );
64     end;
65     end;
66     FreeAndNil( TableList );
67 end;
68 ……

4、 For 与 While 循环嵌套应用:

 1 ……
 2 ProgressBar1.Max:=OldStory.ListParagraphs.Count;
 3 for I := 1 to OldStory.ListParagraphs.Count - 1 do
 4 begin
 5 ProgressBar1.Position:=I;
 6 this.ProcessMessage;
 7 Finished := False;
 8 while not Finished do
 9 begin
10 try
11 CRange := OldStory.ListParagraphs[I].Range;
12 OLevel := CRange.Paragraphs[1].OutlineLevel;
13 if OLevel = 6 then
14 begin
15 OPage := CRange.Information[wdActiveEndPageNumber] - 35;
16 CTitle := Trim(this.Replace(CRange.Text,‘:(.*?) ‘,‘‘));
17 CStart := CRange.Start;
18 //紧接着的下一标题
19 for J := I + 1 to OldStory.ListParagraphs.Count do
20 begin
21 NRange := OldStory.ListParagraphs[J].Range;
22 if NRange.Paragraphs[1].OutlineLevel <= 6 then Break;
23 end;
24 NStart := NRange.Start;
25 OldSel.SetRange(CStart,NStart);
26 OldSel.Copy;
27 <此处省略若干行次>
28 this.DeleteFile(SHtmlFile);this.RandomFileWrite(HtmlFile,0,HtmlContent);
29 //选择所有内容(下次粘贴时会覆盖)
30 NewSel.SetRange( 0,99999 );
31 end;
32 Finished := True;
33 except
34 Finished := False;
35 end;
36 end;
37 end;
38 ……

5、 通过函数返回值作为判断条件:

 1 ……
 2 if this.ReadIniSectionValue(ConfigFile,‘初始化窗口属性‘,‘边框‘) = ‘无‘ then
 3 begin
 4 Form1.BorderStyle := bsNone;
 5 end;
 6 if this.ReadIniSectionValue(ConfigFile,‘初始化窗口属性‘,‘最大化显示‘) = ‘是‘ then
 7 begin
 8 Form1.SetBounds(0,0,this.ScreenWorkAreaWidth,this.ScreenWorkAreaHeight);
 9 end else
10 begin
11 <此处省略若干行次>
12 end;
13 if this.FileExists(CommandLine.ProjectRoot + ‘\‘ + ProjectName + ‘.ico‘) then
14 begin
15 Form1.Icon.LoadFromFile(CommandLine.ProjectRoot + ‘\‘ + ProjectName + ‘.ico‘);
16 end;
17 ……

6、 涉及到 JSON 数组与 JSON 对象的循环和判断应用:

 1 ……
 2 MenuKeys := this.ReadIniSectionKeys(ConfigFile,‘菜单列表‘);
 3 for I := 0 to MenuKeys.length - 1 do
 4 begin
 5 MKey := VarToStr(MenuKeys.get(I));
 6 MValue := this.ReadIniSectionValue(ConfigFile,‘菜单列表‘,MKey);
 7 InfoItems := this.Split(MValue,‘|‘);
 8 if InfoItems.Count = 3 then
 9 begin
10 MCaption := InfoItems.Strings[0];
11 MIcon := InfoItems.Strings[1];
12 MModule := InfoItems.Strings[2];Window.registerAMenuIcon(MKey,MCaption,MIcon,MModule);
13 end;
14 end;
15 ……

7、 判断与异常处理语句的综合应用:

 1 ……
 2 var MenuId,Registered,Module,AName: string;
 3 I: Integer;
 4 AParams,AResult: Variant;
 5 const SWP_NOSIZE = 1;
 6 SWP_NOMOVE = 2;
 7 SWP_FRAMECHANGED = $20;
 8 begin
 9 if Identity = ‘OnNavBarMenuClicked‘ then
10 begin
11 MenuId := VarToStr(this.ArrayRead(Params,0));
12 Registered := VarToStr(this.ArrayRead(Params,1));
13 Module := VarToStr(this.ArrayRead(Params,2));
14 if Pos(‘:‘,Module) = 0 then
15 begin
16 Module := CommandLine.ProjectRoot + ‘\‘ + Module;
17 end;
18 Module := this.Replace(Module,‘\\‘,SlashFlag);
19 if this.FileExists(Module) or (RunMode=‘BS‘) then
20 begin
21 if Registered = ‘0‘ then
22 begin
23 Window.registerAModule(MenuId,VarToStr(CommandLine.ProjectRoot));
24 end;
25 Window.activeAModule(MenuId);
26 end else
27 begin
28 this.ShowMessage(‘模块‘ + MenuId + ‘不存在!‘);
29 end;
30 end else
31 if Identity = ‘GetVariable‘ then
32 begin
33 AName := VarToStr(this.ArrayRead(Params,0));
34 try
35 AResult := Window.htmlVariable(AName);
36 EPX.ClearResults;
37 EPX.AddAResult(AResult);
38 exceptthis.Alert(‘主框架未定义 htmlVariable 方法.‘);
39 end;
40 end else
41 if Identity = ‘CallHtmlFunction‘ then
42 begin
43 AName := VarToStr(this.ArrayRead(Params,0));
44 AParams := this.NewArray;
45 try
46 for I := 1 to Params.length - 1 do
47 begin
48 AParams.set(I-1,this.ArrayRead(Params,I));
49 end;
50 finally
51 if Length(AName) > 0 then
52 begin
53 try
54 AResult := Window.htmlFunction(AName,AParams);
55 EPX.ClearResults;
56 EPX.AddAResult(AResult);
57 except
58 this.Alert(‘主框架未定义 htmlFunction 方法.‘);
59 end;
60 end;
61 end;
62 end;
63 end;
64 ……

8、 判断与循环在普通函数中的应用:

 1 ……
 2 procedure GenerateProcedureDeclareContent(Struct: Variant;DLines,CLines: TStrings;C
 3 ClassName: string);
 4 var CStruct,CItem,PItem,CParams: Variant;
 5 CName,PName,PType,CDeclare,CCall: string;
 6 I,J: Integer;
 7 begin
 8 //生成过程声明
 9 CStruct := Struct.get(‘procedures‘);
10 if not this.VarAssigned(CStruct) then Exit;
11 for I:= 0 to CStruct.length - 1 do
12 begin
13 CItem := CStruct.get(I);
14 CName := VarToStr(CItem.get(‘name‘));
15 //函数名称CDeclare := ‘procedure ‘ + CName;
16 if CLines.Count = 0 then
17 begin
18 CCall := ‘ if MethodName=‘‘‘ + UpperCase(CName) + ‘‘‘ then‘#13#10;
19 end else
20 begin
21 CCall := ‘ else if MethodName=‘‘‘ + UpperCase(CName) + ‘‘‘ then‘#13#10;
22 end;
23 CCall := CCall + ‘ ‘ + CClassName + ‘(Instance).‘ + CName;
24 CParams := CItem.get(‘params‘);
25 if this.VarAssigned(CParams) then
26 begin
27 if CParams.length > 0 then
28 begin
29 CDeclare := CDeclare + ‘(‘;
30 CCall := CCall + ‘(‘;
31 end;
32 for J := 0 to CParams.length - 1 do
33 begin
34 PItem := CParams.get(J);
35 PName := VarToStr(PItem.get(‘name‘));
36 PType := VarToStr(PItem.get(‘type‘));
37 if J > 0 then
38 begin
39 CDeclare := CDeclare + ‘;‘;
40 CCall := CCall + ‘,‘;
41 end;
42 CDeclare := CDeclare + PName + ‘:‘ + PType;
43 if Copy(PType,1,1) = ‘T‘ then
44 begin
45 CCall := CCall + PType + ‘(Integer(Params[‘ + IntToStr(J) + ‘]))‘;
46 end else
47 begin
48 CCall := CCall + ‘Params[‘ + IntToStr(J) + ‘]‘;
49 end;
50 end;
51 if CParams.length > 0 then
52 begin
53 CDeclare := CDeclare + ‘)‘;
54 CCall := CCall + ‘)‘;
55 end;
56 end;
57 //函数返回值类型
58 CDeclare := ‘ AddMethod(‘‘‘ + CDeclare + ‘‘‘,CallMethod);‘;DLines.Add(CDeclare);
59 CLines.Add(CCall);
60 end;
61 end;
62 ……

原文地址:https://www.cnblogs.com/xenli/p/12539759.html

时间: 2024-07-30 22:21:24

ePx Studio 7.2 常用语法学习真实经典案例的相关文章

FreeMarker常用语法学习

1.API网址 http://freemarker.sourceforge.net/docs/ 2.一个Table的例子 [html] view plaincopy freemarker 对表格的控制 这里将所有需要在一个区域显示到数据全部add到一个叫做zbj的list中了 <#assign a2=zbj> -->将list zbj赋值给a2,这里也应该判空的... <#if zbj?exists> <#list 0..zbj?size-1 as a1>    

MySql常用语法(持续学习更新)

Mysql常用语法: 1.使用Mysql: (1)了解数据库和表: SHOW databases; 分析:返回可用数据库的一个列表. SHOW tables; 分析:返回当前选择书库中的表. (2)选择数据库: USE databases; 分析:USE并不返回任何结果. 2.检索: (1)检索单个列: SELECT prod_name FROM products;    分析:该语句利用SELECT语句从products表中检索一个名为prod_name的列 原文地址:https://www.

python之路,Day24 常用设计模式学习

python之路,Day24 常用设计模式学习 本节内容 设计模式介绍 设计模式分类 设计模式6大原则 1.设计模式介绍 设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一

Day5 - Python基础5 常用模块学习

Python 之路 Day5 - 常用模块学习 本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,

Python之路,Day21 - 常用算法学习

Python之路,Day21 - 常用算法学习 本节内容 算法定义 时间复杂度 空间复杂度 常用算法实例 1.算法定义 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制.也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出.如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题.不同的算法可能用不同的时间.空间或效率来完成同样的任务.一个算法的优劣可以用空间复杂度与时间复杂度来衡量. 一个算

C# 常用接口学习 IEnumerable&lt;T&gt;

C# 常用接口学习 IEnumerable<T> 作者:乌龙哈里 时间:2015-10-24平台:Window7 64bit,Visual Studio Community 2015 本文参考: MSDN IEnumerable<T> Interface MS DotNet 源代码 你曾实现过二叉树吗--匠心十年 你可能不知道的陷阱, IEnumerable接口--沙漠之鹰 本文章节: 正文: 本文是作者摸索学习.Net的过程,逐步进行,比较繁琐,是作者本人用来帮助记忆的博文. 我

(转) Git版本控制软件结合GitHub从入门到精通常用命令学习手册

转载自:爱分享 » Git版本控制软件结合GitHub从入门到精通常用命令学习手册 原文传送门: http://www.ihref.com/read-16369.html 注意: 学习前请先配置好Git客户端 相关文章:Git客户端图文详解如何安装配置GitHub操作流程攻略 官方中文手册:http://git-scm.com/book/zh GIT 学习手册简介 本站为 Git 学习参考手册.目的是为学习与记忆 Git 使用中最重要.最普遍的命令提供快速翻阅. 这些命令以你可能需要的操作类型划

ES6常用语法

ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. 虽然目前并不是所有浏览器都能兼容ES6全部特性,但越来越多的程序员在实际项目当中已经开始使用ES6了.所以就算你现在不打算使用ES6,但为了看懂别人的你也该懂点ES6的语法了... 在我们正式讲解ES6语法之前,我们得先了解下Babel. Babel Babel是一个广泛使用的ES6转码器,可以将

sql 常用语法汇总

Sql常用语法 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 备份数据的