?? intraweb開發指南.htm
字號:
<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"> <IMG height=262
src="IntraWeb開發指南.files/web016.jpg" width=197
v:shapes="_x0000_i1032"> <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> const AValue: String);</SPAN></P>
<P><SPAN lang=EN-US>var</SPAN></P>
<P><SPAN lang=EN-US> Id:Integer;</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>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> Id:=StrToInt(AValue);</SPAN></P>
<P><SPAN lang=EN-US>
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> //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> FEditForm.EditMode:=emEdit;</SPAN></P>
<P><SPAN lang=EN-US>
FEditForm.CorpId:=dmhr.badoCorp.FieldByName('CorpId').AsInteger;//</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> 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> //inherited;</SPAN></P>
<P><SPAN lang=EN-US> FEditForm.EditMode:=emInsert;</SPAN></P>
<P><SPAN lang=EN-US> // </SPAN><SPAN
style="FONT-FAMILY: 宋體; Times: ">顯示編輯窗體</SPAN></P>
<P><SPAN lang=EN-US> 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> inherited;</SPAN></P>
<P><SPAN lang=EN-US> //</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> with dmHR do</SPAN></P>
<P><SPAN lang=EN-US> begin</SPAN></P>
<P><SPAN lang=EN-US>
badoQuery.Active:=False;</SPAN></P>
<P><SPAN lang=EN-US>
badoQuery.CommandText:=format('Select count(*) as HumanCount from
tblhuman where CorpID=%s',
[badoCorp.FieldByName('CorpID').AsString]);</SPAN></P>
<P><SPAN lang=EN-US>
badoQuery.Active:=True;</SPAN></P>
<P><SPAN lang=EN-US> if
badoQuery.FieldByName('HumanCount').AsInteger>0 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> badoCorp.Delete;</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></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> 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> FCorpId := Value;</SPAN></P>
<P><SPAN lang=EN-US> //</SPAN><SPAN
style="FONT-FAMILY: 宋體; Times: ">更新界面上的編輯框</SPAN></P>
<P><SPAN lang=EN-US> if not dmHR.badoCorp.Locate('CorpId',
Value, []) then</SPAN></P>
<P><SPAN lang=EN-US> raise
Exception.Create(sCorpIdNotFound);</SPAN></P>
<P><SPAN lang=EN-US> with dmHR.badoCorp do</SPAN></P>
<P><SPAN lang=EN-US> begin</SPAN></P>
<P><SPAN lang=EN-US> iweChnName.Text :=
FieldByName('ChnName').AsString;</SPAN></P>
<P><SPAN lang=EN-US> iweEngName.Text :=
FieldByName('EngName').AsString;</SPAN></P>
<P><SPAN lang=EN-US> iwePhone.Text :=
FieldByName('Phone').AsString;</SPAN></P>
<P><SPAN lang=EN-US> iweFax.Text :=
FieldByName('Fax').AsString;</SPAN></P>
<P><SPAN lang=EN-US> iwmChnInfo.Lines.Text :=
FieldByName('ChnInfo').AsString;</SPAN></P>
<P><SPAN lang=EN-US> iwmEngInfo.Lines.Text :=
FieldByName('EngInfo').AsString;</SPAN></P>
<P><SPAN lang=EN-US> iwmComments.Lines.Text :=
FieldByName('Comments').AsString;</SPAN></P>
<P><SPAN lang=EN-US> 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> FEditMode := Value;</SPAN></P>
<P><SPAN lang=EN-US> case FEditMode of</SPAN></P>
<P><SPAN lang=EN-US> emEdit: iwlTitle.Caption :=
'</SPAN><SPAN style="FONT-FAMILY: 宋體; Times: ">編輯公司信息</SPAN><SPAN
lang=EN-US>';</SPAN></P>
<P><SPAN lang=EN-US> emInsert:</SPAN></P>
<P><SPAN lang=EN-US> begin</SPAN></P>
<P><SPAN lang=EN-US>
iwbEdit.Caption := '</SPAN><SPAN
style="FONT-FAMILY: 宋體; Times: ">增加公司</SPAN><SPAN
lang=EN-US>';</SPAN></P>
<P><SPAN lang=EN-US>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -