翻譯|使用教程|編輯:楊鵬連|2020-08-18 10:18:08.163|閱讀 299 次
概述:本文介紹了phGant Time Package控件常見問題并做解答。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
phGant Time Package同時包含了phGantt 和phSchema控件,是一款快速、完全面向?qū)ο蟮腁ctiveX控件,有著豐富的圖形用戶界面,客戶可以熟練地操作時間進(jìn)度條。時間進(jìn)度條可以以甘特圖和概要視圖的形式顯示。該控件是一款強(qiáng)大的日程安排、項目管理控件,被國際上許多大公司所使用,慧都控件作為PlexityHide公司在中國的核心代理商,為客戶提供優(yōu)質(zhì)的客服和技術(shù)之支持。
不必要的MouseMode
本文是為phGantTimePackage VCL (Delphi XE5)編寫的。
我們得到了問題和一個重復(fù)的示例來支持一個場景,其中開發(fā)人員希望在雙擊TimeItem時彈出一個模式對話框。
所有這些都很簡單:
procedure TForm1.phGant1DblClickGantArea(theGant: TphGant_ComBasic; theDataEntity: TphDataEntity_GantTime); var FrmModal:TFrmModal; begin FrmModal:=TFrmModal.create(nil); try FrmModal.ShowModal; finally FrmModal.Free; end; end;問題是,當(dāng)用戶雙擊該時間項并處于調(diào)整大小的熱點區(qū)域時,鼠標(biāo)模式調(diào)整被輸入,并且在關(guān)閉模態(tài)對話框時仍然被設(shè)置。
我的第一個響應(yīng)是調(diào)用方法MouseMoveModeCancel。此方法適用于以編程方式結(jié)束任何當(dāng)前鼠標(biāo)模式。
然而,它在這個案例中并不奏效。
它不能工作的原因是在DblClick事件返回后——VCL再次直接觸發(fā)鼠標(biāo)向下——這就是我們實際進(jìn)入鼠標(biāo)模式的地方。
在phGantTimePackage中,有一種方法可以分派對windows消息隊列的調(diào)用,這在這里很有用。這個機(jī)制叫做TDoLater,它的解是這樣的:
procedure TForm1.phGant1DblClickGantArea(theGant: TphGant_ComBasic; theDataEntity: TphDataEntity_GantTime); var FrmModal:TFrmModal; begin FrmModal:=TFrmModal.create(nil); try FrmModal.ShowModal; TDoLater.DoLater(LeaveAnyUnintentionalMouseMoveMode,nil); finally FrmModal.Free; end; end; procedure TForm1.LeaveAnyUnintentionalMouseMoveMode(a:TObject); begin phGant1.MouseMoveModeCancel; end;通過這種方式,將MouseMoveCancel延遲到windows在用戶交互上擁有的所有當(dāng)前消息之后的一個時間。
要使用TDoLater,你需要一個phDoLater的用法。
在OnValueChangedGantTime事件中,是否有一種方法可以發(fā)現(xiàn)時間項是否改變了一行。
問題
是否有一種方法來發(fā)現(xiàn)時間項目是否改變了OnValueChangedGantTime事件中的一行。
我正在做的事情無法在OnGantTimeChangeRow事件中或之后完成。
我嘗試使用theGant.RowList.FindRowFromY(lngY).TreeNode.GridRowIndex,但在某些情況下不起作用。
回答
如果返回的行與當(dāng)前擁有時間項的行(theDataEntity_GantTime.Row)不同,請使用theGant.RowList.FindRowFromY(IphGantX3.MousePositionGantArea.Y),這是一個動作…
您可以在OnHintInfo事件中進(jìn)行檢查,并將信息放入稍后在OnValueChangedGantTime事件中讀取的membervariable中。
檢查參數(shù)theDataEntity!= null,然后檢查IphGantX3.GetMouseMoveMode == mmMove。
如果這兩個條件都成立,則用戶正在移動時間項…
然后使用如下所示:
_ThisIsARowMove = theGant.RowList.FindRowFromY(IphGantX3.MousePositionGantArea.Y)<> theDataEntity_GantTime.Row
相關(guān)產(chǎn)品介紹:
VARCHART XGantt:支持ActiveX、.Net等平臺的C#甘特圖控件
AnyGantt:構(gòu)建復(fù)雜且內(nèi)容豐富的甘特圖的理想工具
phGantt Time Package:對任務(wù)和時間的分配管理的甘特圖
dhtmlxGantt:交互式JavaScript / HTML5甘特圖
APS幫助提升企業(yè)生產(chǎn)效率,真正實現(xiàn)生產(chǎn)計劃可視化呈現(xiàn)與控制,快速有效響應(yīng)不同場景的生產(chǎn)計劃,提高準(zhǔn)時交貨能力,提高產(chǎn)能和資源利用率
想要了解phGant Time Package或慧都APS系統(tǒng),請登錄慧都網(wǎng),解決您的問題!
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: