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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2019, 01:42   #1
Cepguo
Пользователь
 
Регистрация: 03.04.2015
Сообщений: 31
По умолчанию Создание компонента - потомка от TTaskbar

Пишу компонент - потомок от TTaskbar:
//------------------------------------------------------------------------------
Код:
class PACKAGE TProgressTaskBar : public TTaskbar
{
protected:
private:
    TWinControl *Control;
    int __fastcall GetMax(void);
    void __fastcall SetMax(int Val);
    int __fastcall GetPosition(void);
    void __fastcall SetPosition(int Val);
public:
    __fastcall TProgressTaskBar(TComponent* Owner);
    __fastcall ~TProgressTaskBar(void);
__published:
    __property int Max = {read=GetMax,write=SetMax};
    __property int Position = {read=GetPosition,write=SetPosition};
};
//------------------------------------------------------------------------------
static inline void ValidCtrCheck(TProgressTaskBar *)
{
  new TProgressTaskBar(NULL);
}
//------------------------------------------------------------------------------
int __fastcall TProgressTaskBar::GetMax(void)
{
  return ProgressMaxValue;
}
//------------------------------------------------------------------------------
void __fastcall TProgressTaskBar::SetMax(int Val)
{
  ProgressMaxValue = Val;
}
//------------------------------------------------------------------------------
int __fastcall TProgressTaskBar::GetPosition(void)
{
  return ProgressValue;
}
//------------------------------------------------------------------------------
void __fastcall TProgressTaskBar::SetPosition(int Val)
{
  ProgressValue = Val;
}
//------------------------------------------------------------------------------
__fastcall TProgressTaskBar::TProgressTaskBar(TComponent* Owner):TTaskbar(Owner)
{
  Control = NULL;
  if(Owner)
  { Control = dynamic_cast<TWinControl *>(Owner);
    if(Control)
    { Control->InsertComponent(this);
    }
  }
  ProgressState = TTaskBarProgressState(TBPF_NORMAL);
}
//------------------------------------------------------------------------------
__fastcall TProgressTaskBar::~TProgressTaskBar(void)
{
  if(Control)
  { Control->RemoveComponent(this);
    Control = NULL;
  }
}
//------------------------------------------------------------------------------
namespace Progresstaskbar
{
  void __fastcall PACKAGE Register()
  {
    TComponentClass classes[1] = {__classid(TProgressTaskBar)};
    RegisterComponents(L"Samples", classes, 0);
  }
}
//------------------------------------------------------------------------------
Далее, в теле программы создаю:
Код:
TProgressTaskBar *ProgressTaskBar = new TProgressTaskBar(this);
ProgressTaskBar->Max = 100;
Потом, в цикле наращиваю ProgressTaskBar->Position++;
Результат нулевой - ничего не происходит с иконкой приложения.
Если вместо этого на форму бросить компонент TTaskbar и то же самое проделать с ним:
Код:
TaskBar->ProgressMaxValue = 100;
TaskBar->ProgressState = TTaskBarProgressState(TBPF_NORMAL);
TaskBar->ProgressValue++;
то всё OK !
В конце концов выяснилось, что при создании формы для компонента TaskBar вызываются:
Perform(RM_TaskBarButtonCreated, 0, 0),
TaskBar.RegisterTab(LHandle),
чего не происходит с моим TProgressTaskBar *ProgressTaskBar = new TProgressTaskBar(this);
вопрос: как создавать экземпляр потомка ?
Cepguo вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аналог TJumList, TTaskBar и TTrayIcon в проекте Firemonkey Delphi_ProGer Общие вопросы Delphi 1 15.11.2014 09:58
Создание компонента sashchernun Компоненты Delphi 2 01.03.2010 00:10
Динамическое создание компонента из компонента)) Impuls1989 Компоненты Delphi 8 22.10.2009 00:08
Создание компонента Neobrat Компоненты Delphi 3 01.05.2009 09:52
создание компонента Bayazet Общие вопросы Delphi 4 17.12.2008 16:48