Страница 1 из 1

Создание своего класса наследника TOpenDialog

Добавлено: 14 май 2015, 21:12
100R
Здраствуйте!!!
Ребят подскажите что творю не так : создаю класс-наследник объекта TOpenDialog
без всяких дополнительных полей и методов т.е копия TOpenDialog для тренировки и понимания сути
создания своих модифицированных объектов из базовых объектов библиотеки builder.
Класс описал в хидере (ниже код прилагается) в файле реализации кострукторы и деструкторы описывать
не стал. Почему? Разве класс наследник не должен наследовать коструктор и деструктор родителя?
Но при попытке создать этот класс bulder выдает ошибку : W8004 'opnd' is assigned a value that is never used
- 'opnd' присваивается значение которое никогда не используется.

Хидер :

Код: Выделить всё

#ifndef formH
#define formH
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
//---------------------------------------------------------------------------
class TForm3 : public TForm
{
__published:    // IDE-managed Components
    
private:    // User declarations
public:        // User declarations
    __fastcall TForm3(TComponent* Owner);
        class TMyOpenDialog : TOpenDialog
         {
         };
         TMyOpenDialog *opnd;
};
//---------------------------------------------------------------------------
extern PACKAGE TForm3 *Form3;
//---------------------------------------------------------------------------
#endif 
Реализация :

Код: Выделить всё

#include <vcl.h>
#pragma hdrstop

#include "form.h"
#include "opendlg.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm3 *Form3;
//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner)
    : TForm(Owner)
{


}
//---------------------------------------------------------------------------
void __fastcall TForm3::FormCreate(TObject *Sender)
{
        TMyOpenDialog *opnd (new TMyOpenDialog(this));
        opnd->Execute();
} 

Re: Создание своего класса наследника TOpenDialog

Добавлено: 15 май 2015, 00:21
Decoder
Переменная opnd у тебя дважды объявлена: один раз в заголовке класса, другой раз в методе формы. Убери её из заголовка.