2011-12-14 19 views
5

TDbGrid.OnColumnMoved ईवेंट हैंडलर में, मैं कुछ कॉलम शीर्षलेख रंग समायोजित करता हूं।TDbGrid.OnColumn में माउस को कैसे छोड़ें

मैं ग्रिड के OnTitleClicked ईवेंट को पॉप-अप (सॉर्ट कॉलम) मेनू में भी उपयोग करता हूं।

दुर्भाग्यवश, उपयोगकर्ता कॉलम ड्रैग करने के बाद और OnColumnMoved समाप्त हो गया है, वीसीएल OnTitleClicked पर कॉल करता है। इसका मतलब है कि कॉलम ड्रैगिंग के बाद मेरा सॉर्ट-ऑर्डर पॉप-अप दिखाई देता है।

OnColumnMoved में कोई तरीका है क्या मैं माउस इवेंट कतार को साफ़ कर सकता हूं ताकि OnTitleClicked को कॉल न किया जाए?

This thread इस कोड में है, लेकिन मेरे पास MsgOnTitleClicked में Msg नहीं है।

while PeekMessage(Msg, 0, WM_MOUSEFIRST, WM_MOUSELAST, 
    PM_REMOVE or PM_NOYIELD) do; 

(वहाँ यह करने के लिए कोई रास्ता नहीं है, तो यह नहीं बड़ी बात नहीं। मैं तो OnColumnMoved में एक ध्वज सेट कर सकते हैं कि OnTitleClick यह करने के लिए अगली कॉल पर ध्यान नहीं देता है।)

+2

आप जानते हैं कि आप अपना स्वयं का 'संदेश: टैगएमएसएस' (या' टीएमएसएस ') वैरिएबल घोषित कर सकते हैं और कॉल में' PeekMessage' 'का उपयोग कर सकते हैं? ऐसा मत सोचो कि यह जवाब है, लेकिन केवल एफवाईआई ... –

+0

हम्मम्म - हर ऑनकॉलमड नहीं किया गया ईवेंट भी मेरे लिए एक ऑनटिटक्लिक घटना ट्रिगर करता है (डेल्फी 10.1), इसलिए ध्वज अविश्वसनीय है। मैं टाइमर का उपयोग कर सकता था, इसलिए यदि OnTitleClick ऑनकॉलम के 0.25 सेकेंड के भीतर (कहें) होता है, तो इसे अनदेखा कर दिया जाता है। लेकिन यह एक पिस्सू को मारने के लिए एक स्लेजहैमर का उपयोग करने जैसा है। इस पर कोई और विचार? – DaveBoltman

उत्तर

5

प्रश्न के टिप्पणी में उल्लेख किया है , आप PeekMessage स्वयं (var Msg: TMsg) के लिए 'संदेश' की आपूर्ति करेंगे। लेकिन OnTitleClick को ट्रिगर करने वाले संदेश को छोड़ना संभव नहीं है क्योंकि यह वही संदेश है जो दोनों घटनाओं को सक्रिय करता है। यदि कॉलम ड्रैग किया गया है तो वीसीएल WM_LBUTTONUP संदेश के जवाब में कॉलम को आगे बढ़ाता है। बाद में उसी संदेश के प्रबंधन के दौरान OnTitleClick कहा जाता है।

IOW, जब तुम PeekMessage साथ संदेश कतार से संदेश हटा सकते हैं, संदेश है कि OnTitleClick चलाता है पहले से ही भेजा जाता है के बाद से हम एक OnColumnMoved हैंडलर में कर रहे हैं।

सबसे आसान दृष्टिकोण ध्वज को सेट करने जैसा दिखता है जैसा आपने बताया है।

संबंधित मुद्दे