在Delphi 2006(我認爲)引入了TFlowPanel和TGridPanel之前,我做了一個概念上類似的控件。它仍然有一些控件不能做的事情,當我將代碼升級到Delphi 2009時,我決定爲它添加一些增強功能。在Delphi中進行設計時拖放?
現在,子控件的順序由其創建順序決定。 FlowPanel和GridPanel通過ControlIndex和其他過濾的屬性顯示出更好的方式,但我想知道是否有辦法在設計時處理拖放重新排序?據我所知,將編輯控件拖放到面板上並不會調用我可以在設計時訪問的任何東西。
我對想要直接檢測拖放操作的方法有半想,或者可能檢測何時移動控件,以便確定它應該放在哪裏。
任何想法?
更新: 好的,讓它工作。容器控件已經覆蓋了AlignControls來管理控件的位置。當您拖動嵌套控件並放下它時,AlignControls再次被調用。然後,我將控件的新座標與列表中的其他控件進行比較,並將其移至適當的位置。
有一些問題需要我去解決(主要涉及對AlignControls的很多調用),但基本概念很簡單。感謝所有評論者提供的所有幫助。
「子控件的順序是由它們的創建順序決定的」命令是什麼? Tab順序?你是否想讓它們在一個面板中從上到下按順序排列? – Serguzest 2009-05-25 09:44:55
現在,如果您選擇面板並向其添加控件,控件將按照您添加的順序進行佈局。要重新排序,您需要將文本剪切並粘貼或查看,然後將其移動。我現在已經添加了一個ControlIndex屬性和一個TFlowPanel,但希望控件的用戶只需拖放即可重新排序。因此,抓住Edit2並將其放在Edit1的左側,它們奇蹟般地交換面板上的位置。 – 2009-05-25 09:49:01