Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 13.08.2019, 02:42   #1
Cepguo
Новичок
 
Регистрация: 03.04.2015
Сообщений: 3
Репутация: 10
По умолчанию Создание компонента - потомка от 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 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


00:12.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru