2012-12-18 18 views
5

डेल्फी 2010 में यह पता लगाने का कोई तरीका है कि dgRowSelect सही पर सेट होने पर कौन सा सेल क्लिक किया गया था?पता लगाएं कि TDBGrid में कौन सा सेल क्लिक किया गया था जब dgRowSelect सही पर सेट किया गया है?

आम तौर पर मैं OnCellClick(Column: TColumn) ईवेंट हैंडलर का उपयोग करता हूं, लेकिन यह अपेक्षा के अनुसार काम नहीं करता है। dgRowSelect = False के साथ इस प्रक्रिया को क्लिक किया गया कॉलम पारित हो जाता है, लेकिन dgRowSelect = True के साथ यह प्रक्रिया पहले कॉलम को पारित कर दी जाती है, भले ही कॉलम पर क्लिक किया गया हो।

मैं OnCellClickTColumn पैरामीटर में गुजरने वाला कोड कहां से काम नहीं कर सकता, अगर मुझे लगता है कि मैं इस अजीब व्यवहार को ठीक करने का तरीका समझ सकता हूं।

उत्तर

13

आप कॉलम प्राप्त करने के लिए माउस निर्देशांक का उपयोग कर सकते हैं। TDBGrid.MouseCoord कॉल करने के बाद, लौटे TGridCoord.X स्तंभ संख्या में शामिल हैं, और Y पंक्ति (जो, ज़ाहिर है, आपके पास पहले से) शामिल हैं: documentation में TGridCoord पर

procedure TForm1.DBGrid1CellClick(Column: TColumn); 
var 
    Pt: TPoint; 
    Coord: TGridCoord; 
    ClickCol: Integer; 
begin 
    Pt := DBGrid1.ScreenToClient(Mouse.CursorPos); 
    Coord := DBGrid1.MouseCoord(Pt.X, Pt.Y); 
    ClickCol := Coord.X; 
    ShowMessage('You clicked column ' + IntToStr(ClickCol)); 
end; 

अधिक जानकारी।

your previous question पर मेरे उत्तर के लिए उपयोग किए गए एक ही ऐप का उपयोग करके परीक्षण किया गया।

+0

बिल्कुल सही जवाब। मुझे वही देता है जो मुझे चाहिए। अगर यह किसी और की मदद करता है तो मैंने इसे डेटाबेस फ़ील्ड का नाम देने के लिए उपयोग किया; डीबीजीड 1। कॉलम [क्लिककॉल - 1]। FIield.FieldName – srayner

+0

+1 इस उत्तर ने मुझे भी मदद की, लेकिन क्या यह है या गुणों के नामकरण में कुछ गड़बड़ है? आम तौर पर माउस निर्देशांक स्क्रीन सापेक्ष स्थिति के रूप में समझा जाता है। –

+0

ScreenToClient रूपांतरण कर सकता है, क्या मैं सही हूँ? –

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

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