2009-02-26 6 views
6

हर बार कुछ समय में जब मैं अपने टीएफआरएएम कक्षाओं (गुणों, विधियों आदि को जोड़ रहा हूं) में बदलाव कर रहा हूं, आईडीई भ्रमित हो जाता है और ऐसा लगता है जैसे फ्रेम एक रूप है, हेडर/कैप्शन, सीमाओं आदि के साथ पूरा करें, फिर भी, स्पष्ट रूप से कक्षा को टीएफआरएएम वंश के रूप में घोषित किया गया है। इस बारे में कोई विचार क्या है, इसे कैसे रोकें, और कैसे ठीक करें?डेल्फी आईडीई टीएफआरएएम का इलाज करता है जैसे कि यह एक फॉर्म

मैं डेल्फी 2007 प्रो का उपयोग कर रहा हूं। यह भी ध्यान दें (यदि यह मायने रखता है), TFrame वंशज आमतौर पर एक डिज़ाइन-टाइम पैकेज के माध्यम से आईडीई (यानी पैलेट पर) के साथ पंजीकृत होते हैं।


बाद: अतिरिक्त "विशेष": फ्रेम है कि मैं के साथ कम से क्षण है यह समस्या आ रही है, नेत्रहीन, एक बहुत ही बुनियादी TFrame (केवल नए ब्रांड TFrame से बदल आकार, और पृष्ठभूमि का रंग है)।

TBasePanel = class(TFrame) 
    private 
    FPanelManager: TPanelManager; 
    procedure SetPanelManager(const Value: TPanelManager); 
    protected 
    procedure Connect; virtual; abstract; 
    procedure Disconnect; virtual; abstract; 
    procedure Refresh; virtual; 
    procedure Requery; virtual; abstract; 
    published 
    property PanelManager: TPanelManager read FPanelManager write 
     SetPanelManager; 

यह फ्रेम दूसरों के एक नंबर के लिए एक आधार वर्ग के रूप में प्रयोग किया जाता है:

यहाँ अपने वर्ग घोषणा है। मैं आमतौर पर इसे सीधे बीपीएल प्रोजेक्ट से संपादित कर रहा हूं (क्योंकि ये सभी फ्रेम पैलेट में स्थापित होते हैं), एक एक्सईई प्रोजेक्ट के हिस्से के बजाय, संबंधित फॉर्म ओपन इत्यादि के साथ

इसके अलावा, "एम्बेडेड डिजाइनर" टूल्स -> विकल्प में चेक किया गया है।

मैं सभी डीएफएम फ़ाइलों को बाइनरी के बजाय पाठ के रूप में सहेज रहा हूं (यदि यह बिल्कुल मायने रखता है)।

+1

बस इस पर एक अपडेट: उत्तर "बेस फ्रेम क्लास" बनाने वाले प्लस के नीचे बिरजर के उत्तर का संयोजन प्रतीत होता है जिसमें सामान्य TFrame से कोई परिवर्तन नहीं होता है, और फिर किसी भी गुण, विधियों आदि को जोड़ने से पहले उसमें विरासत प्राप्त होती है। किसी भी तरह विरासत स्ट्रीमिंग स्थिर करने के लिए लगता है। – Jamo

उत्तर

8

मुझे एक ही समस्या का सामना करना पड़ा है। निम्न चरणों को हमारे लिए समस्या हल हो, यह भी आप के लिए काम कर सकते हैं:

    आईडीई में
  1. : करीब सभी रूपों (* .dfm)
  2. कि पाठ के रूप में फ्रेम
  3. खोलने फ्रेम, दृश्य का उपयोग
  4. DFM शायद वस्तु MyFrame साथ शुरू होता है: TMyFrameClass
  5. विरासत में मिला MyFrame के लिए यह परिवर्तन: TMyFrameClass

मैं नहीं जानता कि क्या समस्या का कारण बना।

+0

यह पूर्वजों के वर्गों पर काम करता प्रतीत होता है, लेकिन मुझे अभी भी "रूट" वर्ग (टीएफआरएएम से उतरने वाला) के साथ कभी-कभी समस्याएं होती हैं। वह "पहला" एक "वस्तु" होना चाहिए, है ना? – Jamo

+0

मुझे यकीन नहीं है, इस परियोजना में जहां मुझे यह समस्या थी, सभी फ्रेम 'विरासत में MyFrame: TMyFrame' से शुरू होते हैं। हमारे द्वारा उपयोग किए जाने वाले TFrame के पहले वंशज में डीएफएम नहीं है, इसलिए मैं जांच नहीं कर सकता कि वहां डीएफएम में क्या होना चाहिए। – Birger

+0

दिलचस्प! मैंने सोचा नहीं था कि "पहला" टीएफआरएम वंशज एक डीएफएम के बिना पूरी तरह से एक हो। यह "बेस टीएफआरएएम" समस्याओं को खत्म कर सकता है जिन पर मुझे संदेह है। हमम ... उस जानकारी के लिए धन्यवाद। इस दृष्टिकोण के साथ प्रयोग करेंगे! – Jamo

0

जहां तक ​​मुझे पता है, फ्रेम को संपादित करते समय आपको संपादक में फॉर्म और फ्रेम दोनों खोलना होगा। अन्यथा अद्यतन समस्याएं हो सकती हैं। हालांकि मैंने इसे नहीं देखा है।

लेकिन मैंने बहुत समय पहले फ्रेम पर छोड़ दिया क्योंकि मुझे उन्हें बहुत विश्वसनीय नहीं मिला।

अभी मैं केवल प्रोटोटाइप के लिए उनका उपयोग करता हूं, एक कस्टम घटक बना रहा हूं (उस पर अनुचित नियंत्रण वाले पैनल से व्युत्पन्न)।

1

शायद आपने 'एंबेडेड डिज़ाइनर' चेक बॉक्स को अनचेक किया था? (उपकरण | विकल्प | पर्यावरण विकल्प | वीसीएल डिजाइनर)। फिर, वास्तव में, आपका फ्रेम डिज़ाइन समय पर एक फॉर्म (कैप्शन, सीमा आदि के साथ) दिखाया गया है। इसके अलावा आपके समस्याग्रस्त टीएफआरएम वंश का एक ठोस कोड या आपके मामले के बारे में अधिक जानकारी मदद मिलेगी।

0

You may have to register custom module to the IDE लेकिन आपकी अतिरिक्त संपत्ति तब तक अच्छी तरह से काम नहीं करेगी जब तक कि वे पूर्वजों के वर्ग में न हों।

+0

क्या आपको अभी भी ऐसा करने की आवश्यकता है, भले ही संपूर्ण फ्रेम-आधारित घटक डिज़ाइन पैकेज के माध्यम से पंजीकृत हो? यह पैलेट पर ठीक दिखता है, और प्रकाशित गुण इंस्पेक्टर में दिखाई देते हैं। यह "इसे फ्रेम व्यवहार खो देता है" लेकिन वास्तव में यह वही है जो मैं चाहता हूं। यह नहीं करता कि यह क्या करता है। – Jamo

+0

यह इसे नियमित घटक के रूप में पंजीकृत करने के बारे में कुछ भी नहीं है। उचित डिजाइनर विशिष्ट behaivour प्राप्त करने के लिए आपको कस्टम मॉड्यूल पंजीकृत करने की आवश्यकता हो सकती है। फिर भी मुझे यकीन नहीं है क्योंकि डिजाइन समय में टीफ्रेम को संभालने का विचार प्रोग्रामर के लिए पारदर्शी नहीं है। लेकिन मेरी राय में कोशिश करना उचित है। – Serguzest

0

मुझे टीएफआरएएम के साथ बहुत सी समस्याएं आ रही हैं और आखिरकार इस तरह के कामकाज में आया है जो मेरी सभी समस्याओं को हल करता है: मैं फ्रेम को दृष्टि से बना और डिजाइन करता हूं, लेकिन केवल हाथ-कोडिंग द्वारा उनका उपयोग करता हूं।

एक दुष्प्रभाव के रूप में मेरे अनुप्रयोग कम हो गए, क्योंकि कम dfm-s की वजह से।

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