C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Создание графического компонента
Xpyct
Отправлено: 07.07.2006, 08:49


Ученик-кочегар

Группа: Участник
Сообщений: 2



Создаю компонент наследник TGraphicControl с 3мя свойствами: OnOff,OnBmp и OffBmp. При состоянии OnOff = true должна отображаться картинка из свойства OnBmp ну и наоборот для False

Написал маленький кодик)) (за место OnBmp пока рисуется элипс) только когда помещаю компонент на форму с моим Builder'ом происходят странные вещи то куча ошибок памяти вылазит то закрывается сразу сам то ещё какаянить фигня
Вообщем компоненты я делаю недавно(точнее со вчерашнего дня biggrin.gif ) поэтому наверно гдето не так чтото написал, помогите люди добрые biggrin.gif

Файл заголовок
CODE

class PACKAGE TDepImg : public TGraphicControl
{
private:
      bool FOnOff;
      TGraphic* FOffBmp;

      void __fastcall SetOnOff(const bool Value);
      void __fastcall SetOffBmp(TGraphic* Value);
protected:
public:
       __fastcall TDepImg(TComponent* Owner);

__published:
      __property TGraphic* OffBmp = {read = FOffBmp, write = SetOffBmp};
      __property bool OnOff = {read = FOnOff, write = SetOnOff};
};


Файл cpp
CODE

static inline void ValidCtrCheck(TDepImg *)
{
       new TDepImg(NULL);
}
//---------------------------------------------------------------------------
__fastcall TDepImg::TDepImg(TComponent* Owner)
       : TGraphicControl(Owner)
{

}
//---------------------------------------------------------------------------
namespace Depimg
{
       void __fastcall PACKAGE Register()
       {
                TComponentClass classes[1] = {__classid(TDepImg)};
                RegisterComponents("Samples", classes, 0);
       }
}
//---------------------------------------------------------------------------
void __fastcall TDepImg::SetOnOff(const bool Value)
{

FOnOff = Value; // Set the state of FOnOff
       if (FOnOff)
       {

        Canvas->Brush->Color = TColor(777777);
               Canvas->Ellipse(0,0,TControl::Width, TControl::Height);
       }
       else
       {

               Canvas->Draw(0,0,FOffBmp);
       }
}
//---------------------------------------------------------------------------

void __fastcall TDepImg::SetOffBmp(TGraphic* Value)
{
       FOffBmp = Value;
       
}
Guest
Отправлено: 07.07.2006, 09:04


Не зарегистрирован







Добавьте конструктор класса TDepImg и в нем задайте нначальные значения FOnOff и, главное, FOffBmp = NULL
Xpyct
Отправлено: 07.07.2006, 09:43


Ученик-кочегар

Группа: Участник
Сообщений: 2



Ошибки вылазят после того как выбираю картинку, видимо вот из за этого фрагмента
CODE

void __fastcall TDepImg::SetOffBmp(TGraphic* Value)
{
      FOffBmp = Value;
     
}


Надо картинку хранить в самой программе, может можно как нить сделать через res файл и от туда грузить или я чегото недогоняю?))
Guest
Отправлено: 07.07.2006, 12:25


Не зарегистрирован







Народ у кого Builder не Enterprise, может ктонить выложить пример создания стандартного компонента где есть открытие картинки в свойствах, например Image.
AVC
Отправлено: 07.07.2006, 12:41


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE (Guest @ 07/07/2006, 11:25)
Народ у кого Builder не Enterprise, может ктонить выложить пример создания стандартного компонента где есть открытие картинки в свойствах, например Image.

Тут

User Attached Image Скачать файл
tilebmp.rar



Вернуться в Вопросы программирования в C++Builder