2016-09-02 6 views
5

के पीछे फायरिंग क्लिक करें मैं विंडोज 10 पर डेल्फी बर्लिन का उपयोग करता हूं। मुझे tStringGrid आधारित tForm पर tOpenDialog का उपयोग करने की आवश्यकता है।अनपेक्षित tStringGrid.OnFixedCell TOpenDialog

जब मैं एक फ़ाइल को डबल क्लिक करता हूं जो एक खुले संवाद पर एक निश्चित कॉलम या पंक्ति को ओवरलैप करता है तो FixedCellClick ईवेंट खुले संवाद के असंतोष के बाद स्वचालित रूप से ठीक हो जाता है। निम्न छवि में फ़ाइल निश्चित पंक्ति की एक ही स्थिति पर है जो पहली पंक्ति है।

enter image description here

type 
    TForm1 = class(TForm) 
    StringGrid1: TStringGrid; 
    OpenDialog1: TOpenDialog; 
    procedure FormClick(Sender: TObject); 
    procedure StringGrid1FixedCellClick(Sender: TObject; ACol, ARow: Integer); 
    procedure FormCreate(Sender: TObject); 
    end; 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
    StringGrid1.Options := StringGrid1.Options + [goFixedColClick, goFixedRowClick]; 
end; 

procedure TForm1.FormClick(Sender: TObject); 
begin 
    OpenDialog1.Execute; 
end; 

procedure TForm1.StringGrid1FixedCellClick(Sender: TObject; ACol, ARow: Integer); 
begin 
    Caption := ''; 
end; 

ज्यादातर मामलों में मैं लेकिन संवाद खिड़की जाने या एक बार फ़ाइल क्लिक करके और खुले बटन पर क्लिक करके इस संभाल कर सकते हैं मैं गारंटी नहीं दे सकते कि अन्य लोग हैं जो इस का उपयोग करेगा कि क्या करना होगा।

कारण क्या है और मैं इस समस्या को कैसे हल कर सकता हूं?

उत्तर

5

मेरा मानना ​​है कि यह कैसे TCustomGrid अगर वहाँ एक इसी माउस डाउन संदेश (FHotTrackCell.Pressed) था जाँच के बिना (अपने ओवरराइड MouseUp विधि में) एक माउस-अप संदेश पर इसके OnFixedCellClick ईवेंट ट्रिगर में एक समस्या है। एक त्वरित सुधार (यदि आप कॉपी और Vcl.Grids संशोधित कर सकते हैं): बर्लिन में लाइन 4564 पर (TCustomGrid.MouseUp विधि में, एक और स्थिति की जांच करने के लिए जोड़ FixedCellClick करने के लिए कॉल करने के लिए अग्रणी):

if ... and FHotTrackCell.Pressed then 
    FixedCellClick(Cell.X, Cell.Y); 

दूसरे शब्दों में, नहीं है FixedCellClick पर कॉल करें यदि माउस-अप पहले से संबंधित माउस-डाउन के बिना आता है।

+4

यह वास्तव में एक क्यूपी रिपोर्ट –

+2

@ डेविडहेफरन [आरएसपी -15758] (https://quality.embarcadero.com/browse/RSP-15758) –

+1

डेल्फी डीएक्स 10 (सिएटल) (अपडेट 1 के बिना) एक ही व्यवहार है। – Zam

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