Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2011, 22:50   #1
m_kostik
Пользователь
 
Регистрация: 22.02.2010
Сообщений: 24
По умолчанию трудности с собственным компонентом

Здравствуйте, господа программисты!
Возникло у меня затруднение при написании собственного компонента (RAD Studio 2010 C++Builder). Объявляю компонент так:
файл Person.h
Код:
#ifndef PersonH
#define PersonH
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Classes.hpp>
#include <Controls.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
#define PANEL_HEIGHT 10
class PACKAGE TCustomPanel1 : public TCustomPanel
{
private:
protected:
public:
  TImage *Foto;
  TPanel *LeftSpouse;
  __fastcall TCustomPanel1(TComponent* Owner);
__published:
};
//---------------------------------------------------------------------------
#endif
файл Person.cpp
Код:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Person.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
// ValidCtrCheck is used to assure that the components created do not have
// any pure virtual functions.
static inline void ValidCtrCheck(TCustomPanel1 *)
{
  new TCustomPanel1(NULL);
}
//---------------------------------------------------------------------------
__fastcall TCustomPanel1::TCustomPanel1(TComponent* Owner)
  : TCustomPanel(Owner)
{
  Foto = new TImage(NULL);
  Foto->Parent = this;
  Foto->Picture->LoadFromFile("C:\\Abort.bmp");
  Foto->Height = this->Height;
  Foto->Width = this->Height;
  Foto->Left = PANEL_HEIGHT;
  Foto->Stretch = true;
  Foto->Top = 0;

  LeftSpouse = new TPanel((TComponent*)NULL);
  LeftSpouse->Left = 0;
  LeftSpouse->Top  = 10;
  LeftSpouse->Height = PANEL_HEIGHT;
  LeftSpouse->Width = PANEL_HEIGHT;
  LeftSpouse->ParentColor = false;
  LeftSpouse->Color = clRed;
  LeftSpouse->Parent = this;
  LeftSpouse->Update();
  this->Update();
}
//---------------------------------------------------------------------------
namespace Person
{
  void __fastcall PACKAGE Register()
  {
     TComponentClass classes[1] = {__classid(TCustomPanel1)};
     RegisterComponents(L"MyComponents", classes, 0);
  }
}
//---------------------------------------------------------------------------
Т.е. компонент представляет собой панель, на которой лежат еще одна панель TPanel и изображение TImage. Проблема вот в чем: ни приведенный конструктор, ни установка в программе (CustomPanel11->LeftSpouse->Color = clRed) не меняют цвет дочерней панели LeftSpouse, если панель создается динамически. Т.е. в отладчике видно, что значение цвета изменилось, а на экране никаких изменений. Если же разместить компонент в desine time, то срабатывает только конструктор, программно цвет опять таки не меняется. Это очень меня озадачило, т.к. с изображением TImage из программы можно сделать все, что угодно. Подскажите, где грабли?
m_kostik вне форума Ответить с цитированием
Старый 28.05.2011, 14:54   #2
m_kostik
Пользователь
 
Регистрация: 22.02.2010
Сообщений: 24
По умолчанию

Всем спасибо вопрос решен:
LeftSpouse->ParentBackground = false;
m_kostik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# и Java трудности. LaiQue Общие вопросы .NET 0 24.04.2010 15:50
Трудности перевода Elidan Общие вопросы C/C++ 0 10.06.2009 01:49
Трудности с формулой arr1val Microsoft Office Excel 1 15.08.2008 17:18
Как заменить стандартный вид ползунка (thumb) в компоненте TTackBar своим собственным? SkAndrew Общие вопросы Delphi 2 11.08.2008 16:26
Трудности перевода Maks1978 Свободное общение 6 30.05.2008 12:55