VARCHART XGantt用戶手冊(cè)(ActiveX版):如何操作互動(dòng)事件(下)
VARCHART XGantt是一個(gè)交互式的甘特圖控件,其模塊化的設(shè)計(jì)讓您可以創(chuàng)建滿足您和您的客戶所需求的應(yīng)用程序。(我們領(lǐng)先的甘特圖控件VARCHART XGantt可用于.NET,ActiveX和ASP.NET應(yīng)用程序。)除此之外,同時(shí)還具有一個(gè)穩(wěn)定可靠的甘特圖工具,在編寫第一行代碼之前,您就可以知道是否可以滿足客戶的需求。
點(diǎn)擊下載VARCHART XGantt免費(fèi)版
在啟用實(shí)時(shí)更新的拖放交互過(guò)程中,接收和處理有關(guān)對(duì)象的信息將非常有用。本文介紹該教程的后面一部分內(nèi)容,內(nèi)容緊接前文哦~
交互事件
如前面所述,現(xiàn)在在交互過(guò)程中和交互結(jié)束時(shí)引發(fā)對(duì)象事件。事件處理程序的簽名,例如這里的VcNodeModifying事件的值沒(méi)有變化。但是如何識(shí)別事件是在交互過(guò)程中還是在交互結(jié)束時(shí)引發(fā)的?
這可能很重要,因?yàn)槔纾⒎菍⑹髽?biāo)移動(dòng)引起的每一個(gè)修改都存儲(chǔ)到數(shù)據(jù)庫(kù)中:這將導(dǎo)致過(guò)多的耗時(shí)工作。當(dāng)然,僅應(yīng)在操作完成后存儲(chǔ)數(shù)據(jù)。
現(xiàn)在,可以通過(guò)伴隨并描述交互的一些新事件來(lái)解決此問(wèn)題,并且可以在交互過(guò)程中的對(duì)象事件中對(duì)其進(jìn)行評(píng)估。
按下鼠標(biāo)左鍵后,VcInteractionStarted事件將傳遞有關(guān)鼠標(biāo)鍵所在的對(duì)象(對(duì)象和對(duì)象類型)以及該對(duì)象發(fā)生了什么的信息。交互所需的一切都可以準(zhǔn)備好。
提示:還可以在此處切換特定于對(duì)象和上下文的更新行為。在極端情況下,一個(gè)節(jié)點(diǎn)可能會(huì)完全動(dòng)態(tài)地做出反應(yīng),而另一個(gè)節(jié)點(diǎn)會(huì)帶有藍(lán)色的幻影幀。此外,相應(yīng)的設(shè)置(InInteractionEventsEnabled)允許有關(guān)是否在交互過(guò)程中也要發(fā)生對(duì)象事件的單獨(dú)決定。
示例:節(jié)點(diǎn)
buy
對(duì)象:NodeObject
類型:vcObjTypeNodeInDiagram
OperationMode:vcIIMMoveNode
按下鼠標(biāo)左鍵時(shí),VcInteractionStarted事件顯示圖表中節(jié)點(diǎn)的移動(dòng)已經(jīng)開始。
應(yīng)該伴隨交互的信息或元素可以在此處初始化。
創(chuàng)建對(duì)象
在某些互動(dòng)中,最初沒(méi)有可用的對(duì)象,例如創(chuàng)建節(jié)點(diǎn)或框時(shí)。在這種情況下,事件VcInteractionObjectChanged會(huì)在內(nèi)部創(chuàng)建對(duì)象后立即發(fā)生,這是涉及節(jié)點(diǎn)的實(shí)際圖表節(jié)點(diǎn)。
該動(dòng)作的結(jié)束由VcInteractionEnded事件指示。在交互過(guò)程中使用的所有其他元素都可以在此處刪除。
使用交互事件創(chuàng)建新對(duì)象時(shí),過(guò)程如下:
VcInteractionStarted
VcInteractionObjectChanged
修改/修改的事件,顯示創(chuàng)建元素時(shí)的修改
創(chuàng)建和創(chuàng)建事件
VcInteractionEnded。
互動(dòng)期間激活了非交互事件
如果在交互過(guò)程中也啟用了交互事件(vcGantt.InInteractionEventsEnabled = true),則釋放鼠標(biāo)鍵時(shí)將有一個(gè)附加事件,指示這些事件的結(jié)束:VcInInteractionEventsEnded。
這使得將交互過(guò)程中引發(fā)的對(duì)象事件與交互結(jié)束時(shí)引發(fā)的對(duì)象事件區(qū)分開來(lái)變得容易。如果引發(fā)此事件,則下一個(gè)對(duì)象事件將是結(jié)束事件。
可能的情況
換句話說(shuō),使用交互事件時(shí)有兩種可能的情況。
控制與以下對(duì)象的交互:
非交互事件已關(guān)閉
非交互事件已打開
停用非交互事件時(shí)與所涉及對(duì)象的事件進(jìn)行協(xié)作
屏幕截圖顯示了在關(guān)閉非交互事件(vcGantt.InInteractionEventsEnabled = false)時(shí),Interaction(黃色閃電)和對(duì)象事件(赭色和綠色閃電)如何協(xié)作:
交互開始,由InteractionStarted事件指示。
釋放鼠標(biāo)鍵時(shí),對(duì)象事件首先出現(xiàn),例如VcNodeModifying和VcNodeModified帶有節(jié)點(diǎn)。換句話說(shuō),這是關(guān)于對(duì)象事件的舊行為,因此,如果不使用InInteraction事件,則無(wú)需修改對(duì)象事件中的現(xiàn)有代碼。
交互的結(jié)束由VcInteractionEnded事件指示。
與相關(guān)對(duì)象的事件合作,而InInteraction事件已激活
如果使用了InInteraction事件,則會(huì)出現(xiàn)以下事件:
VcInteractionStarted在按下鼠標(biāo)左鍵時(shí)開始
鼠標(biāo)移動(dòng)時(shí)的Modifying和Modified事件
VcInInteractionEventsEnded,然后釋放鼠標(biāo)左鍵時(shí)完成對(duì)象事件
VcInteractionEnded指示交互結(jié)束。
示例:移動(dòng)節(jié)點(diǎn):
當(dāng)鼠標(biāo)光標(biāo)位于某個(gè)節(jié)點(diǎn)上時(shí),如果按下鼠標(biāo)左鍵,則交互開始。出現(xiàn)事件VcInteractionStarted。
移動(dòng)鼠標(biāo)時(shí)出現(xiàn)的事件表示實(shí)際節(jié)點(diǎn)的狀態(tài)(VcNodeModifying),而在更新時(shí)(VcNodeModified1>)圖表節(jié)點(diǎn)。
釋放鼠標(biāo)鍵時(shí),將出現(xiàn)VcInInteractionEventsEnded事件
對(duì)象事件VcNodeModifying和VcNodeModified指示交互結(jié)束時(shí)圖表節(jié)點(diǎn)的狀態(tài)。
最后出現(xiàn)的是VcInteractionEnded事件。
示例:設(shè)置節(jié)點(diǎn)更新行為“鼠標(biāo)移動(dòng)”時(shí)對(duì)象事件的行為
由于VcNodeModifying事件允許修改EventReturnstatus(e.ReturnStatus),因此現(xiàn)在也可以在交互過(guò)程中完成此操作。
因此,如果e.ReturnStatus = ReturnStatusFalse指示所提供的數(shù)據(jù)不是“有效的”,則圖表中的對(duì)象將不會(huì)隨著下一次可能的更新而刷新,并且不會(huì)引發(fā)相應(yīng)的VcNodeModified事件。
通過(guò)將對(duì)象保留在其舊位置并通過(guò)幻像指示當(dāng)前位置,可以看到該圖像。
通過(guò)實(shí)物可視化的對(duì)象(當(dāng)前僅節(jié)點(diǎn)和節(jié)點(diǎn)框)的狀態(tài)指示如下:
當(dāng)前位置通過(guò)變亮的實(shí)部來(lái)可視化,事件中仍會(huì)提供其值。
最后一個(gè)有效狀態(tài),即最后一個(gè)未將ReturnStatusFalse返回為e.ReturnStatus的狀態(tài),由另一個(gè)實(shí)數(shù)表示,表示那里“被卡住了”。這樣,兩條信息都可以可視化。
在該節(jié)點(diǎn)上,最后一個(gè)有效狀態(tài)的值(即被卡住的實(shí)數(shù))與VcNodeModifying-Event中的e.OldNode對(duì)應(yīng)。如果VcInInteractionEventsEnded之前的最后一個(gè)VcNodeModifying事件以ReturnStatusFalse完成,則將提供最后一個(gè)有效狀態(tài)在結(jié)束事件中。
可以決定是否接受此狀態(tài)。如果在結(jié)束事件中設(shè)置ReturnStatusFalse,則將恢復(fù)原始的開始狀態(tài)。
實(shí)用技巧:我們建議創(chuàng)建一個(gè)“Interactioning InteractionInfo”對(duì)象,該對(duì)象提供有關(guān)事件中交互的所需信息,并可以進(jìn)行相應(yīng)的評(píng)估。
本教程內(nèi)容到這里就結(jié)束了,感興趣的朋友可以繼續(xù)關(guān)注我們哦,我們會(huì)不斷更新更多內(nèi)容~您也可以點(diǎn)擊下載VARCHART XGantt試用版進(jìn)行評(píng)估~
相關(guān)內(nèi)容推薦:
VARCHART XGantt用戶手冊(cè)(ActiveX版):如何操作互動(dòng)事件(上)
想要購(gòu)買VARCHART XGantt正版授權(quán),或了解更多產(chǎn)品信息請(qǐng)點(diǎn)擊“咨詢?cè)诰€客服”