翻譯|其它|編輯:吳園園|2019-11-14 13:42:42.773|閱讀 250 次
概述:流程圖控件MindFusion.Diagramming for ActiveX常見問題集錦(一):刪除表格等
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
MindFusion.Diagramming for ActiveX(之前版本叫FlowChartX)是一個ActiveX 控件。它能幫助你創(chuàng)建工作流圖,流程圖和圖表處理,數(shù)據(jù)庫實體關(guān)系圖表,組織,層次和關(guān)系圖表,網(wǎng)絡(luò)配置,圖表和樹。
最新版本4.9.5發(fā)布,包含多項新功能改進(jìn)和bug修復(fù),點擊查看詳情
點擊下載MindFusion.Diagramming for ActiveX最新試用版
點擊查看下一篇:
流程圖控件MindFusion.Diagramming for ActiveX常見問題集錦(下):設(shè)置鼠標(biāo)光標(biāo)等
問:有更好的方法來在VB中使用控件實現(xiàn)OLE拖放?
答:有一個名為drProgrControlVB的新拖放模式,它具有與drProgrControl相同的功能。區(qū)別在于,將屬性設(shè)置為VB模式時將觸發(fā)的事件將參數(shù)IVBDataObject接口與自動化兼容。FlowChartX VB事件的名稱與在drProgrControl模式下觸發(fā)的事件名稱相同,只是將“ VB”后綴添加到它們中。
問:如果嘗試訪問傳遞到RequestCreateArrow事件中的箭頭的DestinationBox屬性,則會遇到應(yīng)用程序錯誤!
答:觸發(fā)RequestCreateArrow后,箭頭的DestinationBox對象仍未設(shè)置。我們添加了一個名為ExpectedDestination的新箭頭屬性,該屬性僅在RequestCreateArrow事件處理程序中有效。它指的是如果驗證了箭頭創(chuàng)建后將成為箭頭目標(biāo)對象的框或表。
問:我無法訪問box對象的Font屬性,每次都會引發(fā)錯誤。
答:默認(rèn)情況下,所有對象(表格,框,箭頭)的字體均設(shè)置為null / nothing。當(dāng)圖表對象的字體為null時,流程圖的字體用于呈現(xiàn)對象的文本。這個想法是通過不為每個圖表元素分配字體來減少內(nèi)存使用。當(dāng)對象的字體為null時,它將使用流程圖的Font呈現(xiàn)其文本。因此,如果您需要為不同的對象使用不同的字體,則應(yīng)首先使用VB SET語句將它們設(shè)置為某個值,然后您就可以無錯誤地訪問Font屬性。
問:我希望能夠刪除表格及其相關(guān)的子表格。除非有可能創(chuàng)建一個組并使用DestroyGroup方法,否則我看不到能夠做到這一點的方法。
答:您可以使用遞歸算法對表進(jìn)行級聯(lián)刪除,如下所示:
sub CascadingDelete(tbl as Table) dim i as integer `this will delete all child tables For i = 1 To tbl.GetRelatedTables(1, rlManyToOne).Count CascadingDelete tbl.GetRelatedTables(1, rlManyToOne).Item(0) Next i `the current table has no more children `so we can delete it fc.DeleteItem tbl end sub sub someSub if fc.ActiveItem = itTable then CascadingDelete ActiveTable end if end sub
問:我的系統(tǒng)允許用戶構(gòu)造流程圖,但是我想在允許放置箭頭之前檢查周期。我一直在使用RequestCreateArrow來基于前面和后面的對象驗證箭頭,但是直到最終放置箭頭后,我才能使用FindCycle函數(shù)。您知道解決此問題的方法嗎?
答:您可以使用FindShortestPath方法來檢查是否存在一個帶有正在創(chuàng)建的箭頭的循環(huán)。例如,如果在框b1-> b2之間創(chuàng)建了箭頭,則如果FindShortestPath(b2,b1)找到一條路徑,則意味著將箭頭添加到該路徑將導(dǎo)致循環(huán)(箭頭連接了箭頭的兩端)找到路徑)。
另一個解決方案:如果正在創(chuàng)建從b2到b1的箭頭,則如果FindShortestPath(b1,b2)返回路徑,則再次意味著添加箭頭將導(dǎo)致循環(huán)。
因此,在您的RequestCreateArrow事件處理程序中,您可以使用以下代碼:
if FindShortestPath(arrow.SourceBox, ExpectedDestination) = Nothing then create = true else create = false end if
問:我想以編程方式更改對象的位置(例如,移動盒子)。如何使用VB6做到這一點?
答:可以使用SetRect方法更改框和表的位置。
MindFusion.Diagramming for ActiveX現(xiàn)已加入在線訂購,現(xiàn)在搶購立享優(yōu)惠!
想要購買MindFusion.Diagramming for ActiveX正版授權(quán)的朋友可以。
更多精彩內(nèi)容,敬請關(guān)注下方的微信公眾號,及時獲取產(chǎn)品最新資訊▼▼▼
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: