📄 intraweb开发指南.htm
字号:
<P><SPAN lang=EN-US>
badoOperator.Active:=True;</SPAN></P>
<P><SPAN lang=EN-US>if not badoOperator.Locate('OperName;Password',
VarArrayOf([trim(iweUser.Text), </SPAN></P>
<P><SPAN lang=EN-US>trim(iwePass.Text)]), []) then</SPAN></P>
<P><SPAN lang=EN-US> begin</SPAN></P>
<P><SPAN lang=EN-US>
WebApplication.ShowMessage('</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">无效的用户名或口令,请重新输入</SPAN><SPAN
lang=EN-US>');</SPAN></P>
<P><SPAN lang=EN-US> Exit;</SPAN></P>
<P><SPAN lang=EN-US>end;</SPAN></P>
<P><SPAN lang=EN-US>//</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">如果合法,显示主界面</SPAN></P>
<P><SPAN lang=EN-US> Move(Tformmain);</SPAN></P>
<P><SPAN lang=EN-US> end;</SPAN></P>
<P><SPAN lang=EN-US>end;</SPAN></P>
<P><SPAN style="FONT-FAMILY: 宋体; Times: ">注意这里我们调用</SPAN><SPAN
lang=EN-US>Move</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">函数来切换界面的显示,先释放当前界面,然后再创建新的界面并显示,</SPAN><SPAN
lang=EN-US>Move</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">函数的实现如下:</SPAN></P>
<P><SPAN lang=EN-US>procedure Move(AFormClass:
TIWAppFormClass);</SPAN></P>
<P><SPAN lang=EN-US>begin</SPAN></P>
<P><SPAN lang=EN-US> // </SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">释放当前窗体</SPAN></P>
<P><SPAN lang=EN-US>
TIWAppForm(RWebApplication.ActiveForm).Release;</SPAN></P>
<P><SPAN lang=EN-US> // </SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">创建下一个窗体</SPAN></P>
<P><SPAN lang=EN-US>
AFormClass.Create(RWebApplication).Show;</SPAN></P>
<P><SPAN lang=EN-US>end;</SPAN></P>
<P><SPAN
style="FONT-FAMILY: 宋体; Times: ">可以从上面的流程看到,不需要一点的</SPAN><SPAN
lang=EN-US>html</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">知识,我们现在就完成了一个登陆界面。</SPAN></P>
<P><B><SPAN
style="FONT-FAMILY: 宋体; Times: ">界面继承和框架的支持</SPAN></B></P>
<P><SPAN lang=EN-US> </SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">编写完登陆界面,我们就要开始编写主界面了。常见的网络程序一般都会有一个比较一致的界面风格,通常是一个功能导航条置于页首或者页面的左侧,同时还会有一个</SPAN><SPAN
lang=EN-US>Title</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">页面,显示公司的</SPAN><SPAN
lang=EN-US>Logo</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">和联系信息等等。由于一个项目中可能会有很多个这样的页面,如果对于每个页面我们都去做添加这些导航条或者</SPAN><SPAN
lang=EN-US>Logo</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">信息的话,首先是这些都是重复的无聊工作,其次如果有一天</SPAN><SPAN
lang=EN-US>Logo</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">信息改变了,而类似的页面有</SPAN><SPAN
lang=EN-US>100</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">个话,维护工作就是非常巨大了,那么这一问题如何解决呢?</SPAN></P>
<P><SPAN lang=EN-US>
</SPAN><SPAN style="FONT-FAMILY: 宋体; Times: ">在一般</SPAN><SPAN
lang=EN-US>Delphi</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">程序开发中,我们都知道这种问题可以通过框架和界面继承来实现,幸运的是</SPAN><SPAN
lang=EN-US>Intraweb</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">同样支持界面继承和框架。</SPAN></P>
<P><SPAN lang=EN-US>
</SPAN><SPAN style="FONT-FAMILY: 宋体; Times: ">执行</SPAN><SPAN
lang=EN-US>File | New… | Intraweb| Application Form</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">新建一个页面窗体,起名为</SPAN><SPAN
lang=EN-US>TformBase, </SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">在界面上放一个</SPAN><SPAN
lang=EN-US>TIWImage</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">,设定图像。然后新建一个</SPAN><SPAN
lang=EN-US>TFrame</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">,命名为</SPAN><SPAN
lang=EN-US>FrameMenu, </SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">在</SPAN><SPAN
lang=EN-US>Frame</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">上放四个</SPAN><SPAN
lang=EN-US>TIWLink</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">控件,设置</SPAN><SPAN
lang=EN-US>Caption</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">分别为</SPAN><SPAN
lang=EN-US>”</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">单位列表</SPAN><SPAN
lang=EN-US>”</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">,“人员列表”,“人员信息查询”,“权限设置”,当用户点击各个</SPAN><SPAN
lang=EN-US>Link</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">的时候,需要显示不同的相关界面,</SPAN><SPAN
lang=EN-US>TIWLink</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">的</SPAN><SPAN
lang=EN-US>OnClick</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">事件实现如下:</SPAN></P>
<P><SPAN lang=EN-US>procedure TFrameMenu.iwlCorpClick(Sender:
TObject);</SPAN></P>
<P><SPAN lang=EN-US>begin</SPAN></P>
<P><SPAN lang=EN-US> Move(TformCorpList);//</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">显示公司编辑界面</SPAN></P>
<P><SPAN lang=EN-US>end;</SPAN></P>
<P><SPAN lang=EN-US>procedure TFrameMenu.iwlHumanClick(Sender:
TObject);</SPAN></P>
<P><SPAN lang=EN-US>begin</SPAN></P>
<P><SPAN lang=EN-US> Move(TformHumanList);//</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">显示人员编辑界面</SPAN></P>
<P><SPAN lang=EN-US>end;</SPAN></P>
<P><SPAN lang=EN-US>procedure TFrameMenu.iwlQueryClick(Sender:
TObject);</SPAN></P>
<P><SPAN lang=EN-US>begin</SPAN></P>
<P><SPAN lang=EN-US> Move(TformQuery);//</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">显示查询界面</SPAN></P>
<P><SPAN lang=EN-US>end;</SPAN></P>
<P><SPAN lang=EN-US>procedure TFrameMenu.iwlRightClick(Sender:
TObject);</SPAN></P>
<P><SPAN lang=EN-US>begin</SPAN></P>
<P><SPAN lang=EN-US> Move(TformRight);//</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">显示权限界面</SPAN></P>
<P><SPAN lang=EN-US>end;</SPAN></P>
<P><SPAN style="FONT-FAMILY: 宋体; Times: ">完成的</SPAN><SPAN
lang=EN-US>TformBase</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">示意图如下:</SPAN></P>
<P><SPAN lang=EN-US><IMG height=176
src="IntraWeb开发指南.files/web008.jpg" width=312
v:shapes="_x0000_i1030"> </SPAN></P>
<P><SPAN
style="FONT-FAMILY: 宋体; Times: ">接下来,我们首先要创建公司信息编辑界面,这个界面要从前面建立的</SPAN><SPAN
lang=EN-US>formBase</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">界面继承而来,示意图:</SPAN></P>
<P><SPAN lang=EN-US><IMG height=306
src="IntraWeb开发指南.files/image010.gif" width=371
v:shapes="_x0000_i1026"> </SPAN></P>
<P><B><SPAN style="FONT-FAMILY: 宋体; Times: ">分页控制</SPAN></B></P>
<P><SPAN
style="FONT-FAMILY: 宋体; Times: ">由于公司可能会有很多条,这里使用</SPAN><SPAN
lang=EN-US>TIWDBGrid</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">来显示公司列表,使用</SPAN><SPAN
lang=EN-US>TIWDBNavigator</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">来对公司进行编辑。由于公司数目可能会比较多,所以采用多页显示,要有上一页和下一页的功能,完成的界面示意图如下:</SPAN></P>
<P><SPAN lang=EN-US><IMG height=386
src="IntraWeb开发指南.files/web012.jpg" width=516
v:shapes="_x0000_i1027"> </SPAN></P>
<P><SPAN style="FONT-FAMILY: 宋体; Times: ">注意上面的核心控件</SPAN><SPAN
lang=EN-US>TIWDBGrid</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">要有一些特殊的设定,下面是它的重要的属性设定列表:</SPAN></P>
<P><SPAN lang=EN-US> object iwgCorp: TIWDBGrid</SPAN></P>
<P><SPAN lang=EN-US>UseFrame = True //Grid</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">将显示在一个框架中,但</SPAN><SPAN
lang=EN-US>Grid</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">行数超出显示区域范围的时候</SPAN></P>
<P><SPAN style="FONT-FAMILY: 宋体; Times: ">将,显示滚动条和框架。</SPAN></P>
<P><SPAN lang=EN-US> FromStart=false
//</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">分页显示时,必须设定</SPAN><SPAN
lang=EN-US>FromStart</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">为</SPAN><SPAN
lang=EN-US>False</SPAN></P>
<P><SPAN lang=EN-US> DataSource =
dmHR.dsCorp</SPAN></P>
<P><SPAN lang=EN-US> Options = [dgIndicator,
dgShowTitles] //</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">显示标题,以及在当前活动记录前显示</SPAN><B><SPAN
lang=EN-US>*</SPAN></B><SPAN
style="FONT-FAMILY: 宋体; Times: ">号</SPAN></P>
<P><SPAN lang=EN-US> RefreshMode =
rmAutomatic //</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">每次刷新页面时,会根据数据集更新界面显示</SPAN></P>
<P><SPAN lang=EN-US> RowLimit = 3
//</SPAN><SPAN style="FONT-FAMILY: 宋体; Times: ">用于控制当</SPAN><SPAN
lang=EN-US>Grid</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">分页显示,每页最多显示的记录数目</SPAN></P>
<P><SPAN lang=EN-US> end</SPAN></P>
<P><SPAN
style="FONT-FAMILY: 宋体; Times: ">要想实现分页控制,除了需要设定</SPAN><SPAN
lang=EN-US>DBGrid</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">的属性外,我们还需要调用数据集的</SPAN><SPAN
lang=EN-US>MoveBy</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">方法来实现滚动,代码如下:</SPAN></P>
<P><SPAN lang=EN-US>procedure TformCorpList.iwbLastPageClick(Sender:
TObject);</SPAN></P>
<P><SPAN lang=EN-US>begin</SPAN></P>
<P><SPAN lang=EN-US> inherited;</SPAN></P>
<P><SPAN lang=EN-US> //</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">向前翻一页,滚动的数目正好是</SPAN><SPAN
lang=EN-US>DBGrid</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">的</SPAN><SPAN
lang=EN-US>RowLimit</SPAN></P>
<P><SPAN lang=EN-US>
dmHR.badoCorp.MoveBy(-iwgCorp.RowLimit);</SPAN></P>
<P><SPAN lang=EN-US>end;</SPAN></P>
<P><SPAN lang=EN-US>procedure TformCorpList.iwbNextPageClick(Sender:
TObject);</SPAN></P>
<P><SPAN lang=EN-US>begin</SPAN></P>
<P><SPAN lang=EN-US> inherited;</SPAN></P>
<P><SPAN lang=EN-US> //</SPAN><SPAN
style="FONT-FAMILY: 宋体; Times: ">向后翻一页</SPAN></P>
<P><SPAN lang=EN-US>
dmHR.badoCorp.MoveBy(iwgCorp.RowLimit);</SPAN></P>
<P><SPAN lang=EN-US>end;</SPAN></P>
<P><B><SPAN style="FONT-FAMILY: 宋体; Times: ">列控制</SPAN></B></P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -