मैं एक आभासी विधि अधिभावी कर रहा हूँ, और मैं विरासत में मिला कॉल करना चाहते हैं। लेकिन मैं तत्काल पूर्वज कॉल करने के लिए नहीं करना चाहते, मैं से पहले एक कॉल करना चाहते हैं।डेल्फी: कैसे एक आभासी विधि पर विरासत में मिला विरासत में मिला पूर्वज कॉल करने के लिए?
TObject
TDatabaseObject
TADODatabaseObject <---call this guy
TCustomer <---skip this guy
TVIP <---from this guy
मैं कास्टिंग की कोशिश की मेरी पूर्वज के रूप में self
, और उस पर विधि कॉल, लेकिन यह पुनरावर्ती ढेर अतिप्रवाह को जन्म दिया:
procedure TVip.SetProperties(doc: IXMLDOMDocument);
begin
TADODatabaseObject(Self).SetProperties(doc); //skip over TCustomer ancestor
...
end;
मैं inherited
कीवर्ड जोड़ने की कोशिश की, लेकिन वह ऐसा नहीं करता संकलन:
procedure TVip.SetProperties(doc: IXMLDOMDocument);
begin
inherited TADODatabaseObject(Self).SetProperties(doc); //skip over TCustomer ancestor
...
end;
संभव है?
मैं @Ian लगता है अलार्म की घंटी अब आप के लिए बज किया जाना चाहिए! आपके सिस्टम के इस हिस्से का डिज़ाइन सही नहीं हो सकता है। –
@ डेविड हेफ़र्नन और आप सही हैं। लेकिन पूर्वजों का नाटक 'TListView' है, मैं वास्तव में उस वर्ग को फिर से डिजाइन नहीं कर सकता जिसका मेरा कोई नियंत्रण नहीं है। –
@ इयान किस बिंदु पर आपके पास नियंत्रण है? TADODatabaseObject? TCustomer? –