📄 intraweb开发指南.htm
字号:
lang=EN-US>Windows</SPAN><SPAN
style="FONT-FAMILY: 宋体">开发的程序员学习</SPAN><SPAN
lang=EN-US>IntraWeb</SPAN><SPAN
style="FONT-FAMILY: 宋体">开发可以毫不夸张地说,没有任何学习曲线,你甚至可以不需要有任何的</SPAN><SPAN
lang=EN-US>HTML</SPAN><SPAN style="FONT-FAMILY: 宋体">、</SPAN><SPAN
lang=EN-US>XML</SPAN><SPAN style="FONT-FAMILY: 宋体">、</SPAN><SPAN
lang=EN-US>JavaScript</SPAN><SPAN
style="FONT-FAMILY: 宋体">等等网站编程知识,你只需要懂得</SPAN><SPAN
lang=EN-US>Pascal</SPAN><SPAN
style="FONT-FAMILY: 宋体">就足够了。</SPAN></P>
<P><SPAN lang=EN-US>3. </SPAN><SPAN
style="FONT-FAMILY: 宋体">因为</SPAN><SPAN
lang=EN-US>Intraweb</SPAN><SPAN
style="FONT-FAMILY: 宋体">的作者</SPAN><SPAN lang=EN-US>Kuduz</SPAN><SPAN
style="FONT-FAMILY: 宋体">是著名的网络开发组件</SPAN><SPAN
lang=EN-US>Indy</SPAN><SPAN
style="FONT-FAMILY: 宋体">的创始人,有着极强的网络服务器开发经验,在</SPAN><SPAN
lang=EN-US>Intraweb</SPAN><SPAN
style="FONT-FAMILY: 宋体">中集成了一个小巧的</SPAN><SPAN lang=EN-US>http
server</SPAN><SPAN style="FONT-FAMILY: 宋体">,可以方便的进行</SPAN><SPAN
lang=EN-US>web</SPAN><SPAN
style="FONT-FAMILY: 宋体">程序跟踪调试排错,从我使用的经验来看,比</SPAN><SPAN
lang=EN-US>Borland</SPAN><SPAN style="FONT-FAMILY: 宋体">的</SPAN><SPAN
lang=EN-US>Web App Debugger</SPAN><SPAN
style="FONT-FAMILY: 宋体">运行速度要快,要更稳定。</SPAN></P>
<P><SPAN lang=EN-US>4. </SPAN><SPAN
style="FONT-FAMILY: 宋体">支持非常简单直观的</SPAN><SPAN
lang=EN-US>Session</SPAN><SPAN
style="FONT-FAMILY: 宋体">支持,后面我们会讲到。</SPAN></P>
<P><B><SPAN style="FONT-FAMILY: 宋体">基于</SPAN><SPAN
lang=EN-US>Web</SPAN></B><B><SPAN
style="FONT-FAMILY: 宋体">的人力资源系统</SPAN></B></P>
<P><SPAN lang=EN-US>
</SPAN><SPAN style="FONT-FAMILY: 宋体">前面说了</SPAN><SPAN
lang=EN-US>IntraWeb</SPAN><SPAN
style="FONT-FAMILY: 宋体">那么多的好处,那么我们现在就来看看如何实现一个简单的人力资源系统。下面是我们要做的人力资源系统的用例图:</SPAN></P>
<P><SPAN lang=EN-US><IMG height=361
src="IntraWeb开发指南.files/image002.gif" width=371
v:shapes="_x0000_i1028"> </SPAN></P>
<P><SPAN
style="FONT-FAMILY: 宋体">从用例图我们可以看到这个人力资源系统,主要的功能就是能够增加、删除和修改公司的信息以及公司内的人员的相关信息,并能够对职员的各项信息进行查询。对于</SPAN><SPAN
lang=EN-US>IT</SPAN><SPAN
style="FONT-FAMILY: 宋体">公司来说,他们最关心的是职员的专业技能,因此要求对职员的各项技能有一个评估,下面就是根据需求做的数据库设计的</SPAN><SPAN
lang=EN-US>ER</SPAN><SPAN style="FONT-FAMILY: 宋体">图:</SPAN></P>
<P><SPAN lang=EN-US> <IMG height=393
src="IntraWeb开发指南.files/image004.gif" width=478
v:shapes="_x0000_i1029"> </SPAN></P>
<P><SPAN
style="FONT-FAMILY: 宋体">从图中可以看到,本系统的信息模型非常简单,公司同职员的关系是一对多,技能水平同职员的关系是多对一的,剩下的表还有就是管理员表和一些编码表了。要注意的是这个信息模型设计的实际上是有一些问题的,但是我们的目标主要放在如何使用</SPAN><SPAN
lang=EN-US>Intraweb</SPAN><SPAN
style="FONT-FAMILY: 宋体">开发</SPAN><SPAN lang=EN-US>web</SPAN><SPAN
style="FONT-FAMILY: 宋体">程序,这里就不讨论设计的问题了。由</SPAN><SPAN
lang=EN-US>ER</SPAN><SPAN style="FONT-FAMILY: 宋体">图生成</SPAN><SPAN
lang=EN-US>Access</SPAN><SPAN
style="FONT-FAMILY: 宋体">的数据库表,数据库文件名为</SPAN><SPAN
lang=EN-US>HR.mdb</SPAN><SPAN style="FONT-FAMILY: 宋体">。</SPAN></P>
<P><B><SPAN style="FONT-FAMILY: 宋体">登陆界面的实现</SPAN></B></P>
<P><SPAN
style="FONT-FAMILY: 宋体">几乎所有的应用系统的第一个界面都是登陆界面,我们首先就来实现一个登陆界面。点击</SPAN><SPAN
lang=EN-US>Delphi7</SPAN><SPAN
style="FONT-FAMILY: 宋体">的菜单项</SPAN><SPAN lang=EN-US>File |
New…</SPAN><SPAN style="FONT-FAMILY: 宋体">调出</SPAN><SPAN
lang=EN-US>New Items Dialog</SPAN><SPAN
style="FONT-FAMILY: 宋体">,</SPAN> <SPAN
style="FONT-FAMILY: 宋体">执行</SPAN><SPAN lang=EN-US>Intraweb | Stand
Alone Application</SPAN><SPAN style="FONT-FAMILY: 宋体">,</SPAN><SPAN
lang=EN-US>IntraWeb</SPAN><SPAN
style="FONT-FAMILY: 宋体">会创建两个文件一个是</SPAN><SPAN
lang=EN-US>ServerController</SPAN><SPAN
style="FONT-FAMILY: 宋体">,一个是窗体文件,名为</SPAN><SPAN
lang=EN-US>IWUnit1</SPAN><SPAN
style="FONT-FAMILY: 宋体">,创建后的项目编译后会生成的目标文件为</SPAN><SPAN
lang=EN-US>EXE</SPAN><SPAN style="FONT-FAMILY: 宋体">类型的</SPAN><SPAN
lang=EN-US>Web Server</SPAN><SPAN
style="FONT-FAMILY: 宋体">程序,我们这里选择</SPAN><SPAN lang=EN-US>Stand
Alone</SPAN><SPAN style="FONT-FAMILY: 宋体">模式的程序是因为在这种模式下</SPAN><SPAN
lang=EN-US>Intraweb</SPAN><SPAN
style="FONT-FAMILY: 宋体">可以很方便的进行单步跟踪调试,到发布时我们只需要简单修改一下项目文件就可以将</SPAN><SPAN
lang=EN-US>Stand Alone</SPAN><SPAN
style="FONT-FAMILY: 宋体">模式的</SPAN><SPAN
lang=EN-US>webserver</SPAN><SPAN
style="FONT-FAMILY: 宋体">改成</SPAN><SPAN lang=EN-US>ISAPI</SPAN><SPAN
style="FONT-FAMILY: 宋体">形式发布的</SPAN><SPAN lang=EN-US>Web
Server</SPAN><SPAN style="FONT-FAMILY: 宋体">。</SPAN></P>
<P><SPAN style="FONT-FAMILY: 宋体">先保存项目,设定项目名为</SPAN><SPAN
lang=EN-US>HR</SPAN><SPAN style="FONT-FAMILY: 宋体">,将</SPAN><SPAN
lang=EN-US>IWUnit1</SPAN><SPAN
style="FONT-FAMILY: 宋体">改为</SPAN><SPAN
lang=EN-US>CFormLogin.pas</SPAN><SPAN
style="FONT-FAMILY: 宋体">,因为我们的项目中大量用到了数据库的操作,所以要新建一个数据模块,名为</SPAN><SPAN
lang=EN-US>DatamoduleUnit.pas</SPAN><SPAN
style="FONT-FAMILY: 宋体">。接下来在</SPAN><SPAN
lang=EN-US>CFormLogin</SPAN><SPAN
style="FONT-FAMILY: 宋体">界面上放置二个</SPAN><SPAN
lang=EN-US>TIWEdit</SPAN><SPAN
style="FONT-FAMILY: 宋体">控件,命名为</SPAN><SPAN
lang=EN-US>iweUser</SPAN><SPAN style="FONT-FAMILY: 宋体">和</SPAN><SPAN
lang=EN-US>iwePass</SPAN><SPAN
style="FONT-FAMILY: 宋体">用于输入登陆用户名和口令。再放置两个</SPAN><SPAN
lang=EN-US>TIWButton</SPAN><SPAN
style="FONT-FAMILY: 宋体">按钮,命名为</SPAN><SPAN
lang=EN-US>iwbConfirm</SPAN><SPAN
style="FONT-FAMILY: 宋体">和</SPAN><SPAN
lang=EN-US>iwbClear</SPAN><SPAN
style="FONT-FAMILY: 宋体">,最后放上两个</SPAN><SPAN
lang=EN-US>TIWLable</SPAN><SPAN
style="FONT-FAMILY: 宋体">标签控件,设定</SPAN><SPAN
lang=EN-US>Caption</SPAN><SPAN
style="FONT-FAMILY: 宋体">为输入提示信息,完成界面示意图如下:</SPAN></P>
<P><SPAN lang=EN-US><IMG height=132
src="IntraWeb开发指南.files/web006.jpg" width=260
v:shapes="_x0000_i1025"> </SPAN></P>
<P><SPAN
style="FONT-FAMILY: 宋体">当用户输入用户名和密码后,点击确定按钮后,我们需要判断用户名和口令的合法性,如果不合法,要提示错误信息,要求用户重新输入,注意要在</SPAN><SPAN
lang=EN-US>IE</SPAN><SPAN
style="FONT-FAMILY: 宋体">中显示弹出式窗口,需要调用</SPAN><SPAN
lang=EN-US>Intraweb</SPAN><SPAN
style="FONT-FAMILY: 宋体">的</SPAN><SPAN
lang=EN-US>WebApplication</SPAN><SPAN
style="FONT-FAMILY: 宋体">全局对象的</SPAN><SPAN
lang=EN-US>ShowMessage</SPAN><SPAN
style="FONT-FAMILY: 宋体">函数,如果合法则显示主界面。</SPAN></P>
<P><SPAN style="FONT-FAMILY: 宋体">下面就为确定按钮添加单击事件处理函数,下面是</SPAN><SPAN
lang=EN-US>TIWButton</SPAN><SPAN
style="FONT-FAMILY: 宋体">的</SPAN><SPAN lang=EN-US>OnClick</SPAN><SPAN
style="FONT-FAMILY: 宋体">事件的实现代码:</SPAN></P>
<P><SPAN lang=EN-US>procedure TformLogin.iwbConfirmClick(Sender:
TObject);</SPAN></P>
<P><SPAN lang=EN-US>begin</SPAN></P>
<P><SPAN lang=EN-US> if (trim(iweUser.Text)='') or
(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: 宋体">必须输入用户名和密码</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> //dmHR</SPAN><SPAN
style="FONT-FAMILY: 宋体">是定义在数据模块中联结</SPAN><SPAN
lang=EN-US>HR.mdb</SPAN><SPAN style="FONT-FAMILY: 宋体">的</SPAN><SPAN
lang=EN-US>Ado</SPAN><SPAN style="FONT-FAMILY: 宋体">联结</SPAN></P>
<P><SPAN lang=EN-US> with dmHR do</SPAN></P>
<P><SPAN lang=EN-US> begin</SPAN></P>
<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: 宋体">无效的用户名或口令,请重新输入</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: 宋体">如果合法,显示主界面</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: 宋体">注意这里我们调用</SPAN><SPAN
lang=EN-US>Move</SPAN><SPAN
style="FONT-FAMILY: 宋体">函数来切换界面的显示,先释放当前界面,然后再创建新的界面并显示,</SPAN><SPAN
lang=EN-US>Move</SPAN><SPAN
style="FONT-FAMILY: 宋体">函数的实现如下:</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: 宋体">释放当前窗体</SPAN></P>
<P><SPAN lang=EN-US>
TIWAppForm(RWebApplication.ActiveForm).Release;</SPAN></P>
<P><SPAN lang=EN-US> // </SPAN><SPAN
style="FONT-FAMILY: 宋体">创建下一个窗体</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: 宋体">可以从上面的流程看到,不需要一点的</SPAN><SPAN
lang=EN-US>html</SPAN><SPAN
style="FONT-FAMILY: 宋体">知识,我们现在就完成了一个登陆界面。</SPAN></P>
<P><B><SPAN style="FONT-FAMILY: 宋体">界面继承和框架的支持</SPAN></B></P>
<P><SPAN lang=EN-US> </SPAN><SPAN
style="FONT-FAMILY: 宋体">编写完登陆界面,我们就要开始编写主界面了。常见的网络程序一般都会有一个比较一致的界面风格,通常是一个功能导航条置于页首或者页面的左侧,同时还会有一个</SPAN><SPAN
lang=EN-US>Title</SPAN><SPAN
style="FONT-FAMILY: 宋体">页面,显示公司的</SPAN><SPAN
lang=EN-US>Logo</SPAN><SPAN
style="FONT-FAMILY: 宋体">和联系信息等等。由于一个项目中可能会有很多个这样的页面,如果对于每个页面我们都去做添加这些导航条或者</SPAN><SPAN
lang=EN-US>Logo</SPAN><SPAN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -