zoukankan      html  css  js  c++  java
  • 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 ……
  • 相关阅读:
    vim的额外功能
    vi的使用
    文件与文件系统的压缩
    其他常用的压缩与备份工具
    光盘写入工具
    XFS 文件系统的备份与还原
    打包命令:tar
    Linux 系统常见的压缩命令
    Windows10修改DNS
    Linux 磁盘与文件系统管理
  • 原文地址:https://www.cnblogs.com/xenli/p/12539759.html
Copyright © 2011-2022 走看看