⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 intraweb开发指南.htm

📁 IntraWeb学习资料
💻 HTM
📖 第 1 页 / 共 5 页
字号:
            <P><SPAN style="FONT-FAMILY: 宋体; Times: ">平时我们在使用</SPAN><SPAN 
            lang=EN-US>TDBGrid</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">的时候,选中某一条记录的时候会将数据集的游标定位到相应的记录上,同样的我们也想在</SPAN><SPAN 
            lang=EN-US>TIWDBGrid</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">上实现这一功能,这需要设定</SPAN><SPAN 
            lang=EN-US>IWDBGrid</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">的</SPAN><SPAN 
            lang=EN-US>Column</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">对象的</SPAN><SPAN 
            lang=EN-US>LinkField</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">属性。</SPAN></P>
            <P><SPAN lang=EN-US><IMG height=132 
            src="IntraWeb开发指南.files/web014.jpg" width=115 
            v:shapes="_x0000_i1031"> &nbsp; <IMG height=262 
            src="IntraWeb开发指南.files/web016.jpg" width=197 
            v:shapes="_x0000_i1032"> &nbsp; <IMG height=242 
            src="IntraWeb开发指南.files/image018.jpg" width=181 
            v:shapes="_x0000_i1033"> </SPAN></P>
            <P><SPAN style="FONT-FAMILY: 宋体; Times: ">比如在图中我们给</SPAN><SPAN 
            lang=EN-US>ChnName</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">字段设定了</SPAN><SPAN 
            lang=EN-US>LinkField</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">为</SPAN><SPAN 
            lang=EN-US>CorpID</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">键值字段,</SPAN><SPAN 
            lang=EN-US>LinkField</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">可以将绑定的字段的当前值传给</SPAN><SPAN 
            lang=EN-US>OnClick</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 
            TformCorpList.iwgCorpColumns1Click(ASender: TObject;</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; const AValue: String);</SPAN></P>
            <P><SPAN lang=EN-US>var</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; Id:Integer;</SPAN></P>
            <P><SPAN lang=EN-US>begin</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; inherited;</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; //</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">获得</SPAN><SPAN 
            lang=EN-US>CorpID</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">值,使用</SPAN><SPAN 
            lang=EN-US>Locate</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">定位值</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; Id:=StrToInt(AValue);</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; 
            dmHR.badoCorp.Locate('CorpId',Id,[]);</SPAN></P>
            <P><SPAN lang=EN-US>end;</SPAN></P>
            <P><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">运行后,从前面的图中我们可以看到在清华同方公司的下面有一个下滑线,点击超连接就会调用</SPAN><SPAN 
            lang=EN-US>OnClick</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">事件,将数据集游标更新为被点记录,同时更新界面下边的公司中文信息和英文信息。</SPAN></P>
            <P><B><SPAN style="FONT-FAMILY: 宋体; Times: ">信息编辑</SPAN></B></P>
            <P><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">完成记录浏览功能,我们需要实现对公司信息编辑的功能。其中增加和修改公司记录用一个界面来完成,为了识别操作性质的不同,我们为编辑界面增加了一个</SPAN><SPAN 
            lang=EN-US>EditMode</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">属性,它是枚举类型的,当修改时设为</SPAN><SPAN 
            lang=EN-US>emEdit, </SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">当添加时设为</SPAN><SPAN 
            lang=EN-US>emInsert</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">。下面是代码实现:</SPAN></P>
            <P><SPAN lang=EN-US>//</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">修改公司信息</SPAN></P>
            <P><SPAN lang=EN-US>procedure TformCorpList.iwnCorpEdit(Sender: 
            TObject);</SPAN></P>
            <P><SPAN lang=EN-US>begin</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; //inherited;//</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>&nbsp; FEditForm.EditMode:=emEdit;</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; 
            FEditForm.CorpId:=dmhr.badoCorp.FieldByName('CorpId').AsInteger;//</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">传递键值进去</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; // </SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">显示编辑窗体</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; FEditForm.Show;</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>procedure TformCorpList.iwnCorpInsert(Sender: 
            TObject);</SPAN></P>
            <P><SPAN lang=EN-US>begin</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; //inherited;</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; FEditForm.EditMode:=emInsert;</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; // </SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">显示编辑窗体</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; FEditForm.Show;</SPAN></P>
            <P><SPAN lang=EN-US>end;</SPAN></P>
            <P><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">对于删除的实现需要一些特殊处理,这里我们不能使用</SPAN><SPAN 
            lang=EN-US>TIWDBNavigator</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">默认的</SPAN><SPAN 
            lang=EN-US>Delete</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">按钮来实现,因为</SPAN><SPAN 
            lang=EN-US>Intraweb</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">默认是先执行删除操作,然后才调用</SPAN><SPAN 
            lang=EN-US>OnClick</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">事件,也就是说我们无法在删除前判断是否允许删除,因为公司下面可能会有很多的员工信息,当公司下员工数目不为零时,我们应该禁止删除公司,所以这里要用</SPAN><SPAN 
            lang=EN-US>Button</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">来实现(注意:在</SPAN><SPAN 
            lang=EN-US>intraweb 5.0.35</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">版本中有这个问题,新的版本是否解决了我就不清楚了)。下面是删除的实现代码:</SPAN></P>
            <P><SPAN lang=EN-US>procedure TformCorpList.iwbDeleteClick(Sender: 
            TObject);</SPAN></P>
            <P><SPAN lang=EN-US>begin</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; inherited;</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; //</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">因为</SPAN><SPAN 
            lang=EN-US>IWDBNavigator</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">默认情况下是先删除,然后才调用我们的事件,因此需要修改这一</SPAN></P>
            <P><SPAN lang=EN-US>//</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">处理过程,所以只好是用</SPAN><SPAN 
            lang=EN-US>Button</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">来实现</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; with dmHR do</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; begin</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp;&nbsp;&nbsp; 
            badoQuery.Active:=False;</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp;&nbsp;&nbsp; 
            badoQuery.CommandText:=format('Select count(*) as HumanCount from 
            tblhuman where CorpID=%s', 
            [badoCorp.FieldByName('CorpID').AsString]);</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp;&nbsp;&nbsp; 
            badoQuery.Active:=True;</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp;&nbsp;&nbsp; if 
            badoQuery.FieldByName('HumanCount').AsInteger&gt;0 then</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp;&nbsp;&nbsp; begin</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            WebApplication.ShowMessage('</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">先删除该公司下所有的人员信息后才能删除该公司</SPAN><SPAN 
            lang=EN-US>');</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit;</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp;&nbsp;&nbsp; end;</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp;&nbsp;&nbsp; badoCorp.Delete;</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; end;</SPAN></P>
            <P><SPAN lang=EN-US>end;</SPAN></P>
            <P><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">最后就是公司信息编辑界面的实现了,下面是编辑界面的示意图:</SPAN></P>
            <P><SPAN lang=EN-US><IMG height=314 
            src="IntraWeb开发指南.files/image020.jpg" width=348 
            v:shapes="_x0000_i1034"> </SPAN></P>
            <P><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">如果当前编辑操作是添加的话,需要设定界面上的信息为空,如果为编辑则要获得公司信息,填充界面编辑框,下面是实现代码:</SPAN></P>
            <P><SPAN lang=EN-US>const</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; sCorpIdNotFound = '</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">无法找到相应的公司信息</SPAN><SPAN 
            lang=EN-US>!';</SPAN></P>
            <P><SPAN lang=EN-US>procedure TformEditCorp.SetCorpId(const Value: 
            Integer);</SPAN></P>
            <P><SPAN lang=EN-US>begin</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; FCorpId := Value;</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; //</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">更新界面上的编辑框</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; if not dmHR.badoCorp.Locate('CorpId', 
            Value, []) then</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp;&nbsp;&nbsp; raise 
            Exception.Create(sCorpIdNotFound);</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; with dmHR.badoCorp do</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; begin</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp;&nbsp;&nbsp; iweChnName.Text := 
            FieldByName('ChnName').AsString;</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp;&nbsp;&nbsp; iweEngName.Text := 
            FieldByName('EngName').AsString;</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp;&nbsp;&nbsp; iwePhone.Text := 
            FieldByName('Phone').AsString;</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp;&nbsp;&nbsp; iweFax.Text := 
            FieldByName('Fax').AsString;</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp;&nbsp;&nbsp; iwmChnInfo.Lines.Text := 
            FieldByName('ChnInfo').AsString;</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp;&nbsp;&nbsp; iwmEngInfo.Lines.Text := 
            FieldByName('EngInfo').AsString;</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp;&nbsp;&nbsp; iwmComments.Lines.Text := 
            FieldByName('Comments').AsString;</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; end;</SPAN></P>
            <P><SPAN lang=EN-US>end;</SPAN></P>
            <P><SPAN lang=EN-US>procedure TformEditCorp.SetEditMode(const Value: 
            TEditMode);</SPAN></P>
            <P><SPAN lang=EN-US>begin</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; FEditMode := Value;</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp; case FEditMode of</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp;&nbsp;&nbsp; emEdit: iwlTitle.Caption := 
            '</SPAN><SPAN style="FONT-FAMILY: 宋体; Times: ">编辑公司信息</SPAN><SPAN 
            lang=EN-US>';</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp;&nbsp;&nbsp; emInsert:</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            iwbEdit.Caption := '</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; Times: ">增加公司</SPAN><SPAN 
            lang=EN-US>';</SPAN></P>
            <P><SPAN lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -