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

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

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2016, 19:34   #1
Neznayka2016
Пользователь
 
Регистрация: 18.03.2016
Сообщений: 29
Вопрос Свойства компоненты

Доброго времени суток Господа программисты! Нужно в компонент поместить несколько таймеров, делаю так:
Цитата:
unit MyComponent_u;

interface

uses
SysUtils, Classes, Controls, StdCtrls, ExtCtrls;

type
TMyComponent = class (TComponent)
private
{ Private declarations }
FTimerOne: TTimer;

FTimerTwo: TTimer;
procedure SetTimerOne (Value: TTimer);
procedure SetTimerTwo (Value: TTimer);
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create (AOwner: TComponent); override;
destructor Destroy; override;
published
{ Published declarations }
property TimerOne: TTimer read FTimerOne write SetTimerOne;

property TimerTwo: TTimer read FTimerTwo write SetTimerTwo;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('MyComponents', [TMyComponent]);
end;

procedure TMyComponent.SetTimerOne (Value: TTimer);
begin
if Assigned (Value) then FTimerOne.Assign (Value);
end;

procedure TMyComponent.SetTimerTwo (Value: TTimer);
begin
if Assigned (Value) then FTimerTwo.Assign (Value);
end;

constructor TMyComponent.Create (AOwner: TComponent);
begin
inherited Create (AOwner);
FTimerOne:=TTimer.Create(Self);
FTimerTwo:=TTimer.Create(Self);
end;

destructor TMyComponent.Destroy;
begin
FTimerOne.Free;
FTimerTwo.Free;
inherited Destroy;
end;

end.
Свойства таймеров отображаются в инспекторе и все вроде бы норм, но после компиляции приложения все свойства принимают дефолтные значения. Что я делаю не так
Neznayka2016 вне форума Ответить с цитированием
Старый 05.09.2016, 10:17   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

Код:
property TimerOne: TTimer read FTimerOne;
property TimerTwo: TTimer read FTimerTwo;
Убрать присвоение может?
А ещё мне странно, что конструктор с оверрайдом, я бы убрал (но думаю, на озвученную проблему это не влияет).

Последний раз редактировалось phomm; 05.09.2016 в 10:24.
phomm вне форума Ответить с цитированием
Старый 05.09.2016, 10:42   #3
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,755
По умолчанию

Что это за бред? Если нужно хранить "горизонтальные" ссылки на компоненты, которые положены рядом на форме, ничего в конструкторе создавать не нужно. Вместо этого перекрыть Notification и обрабатывать opRemove.

Почитайте теорию про разработку компонентов, что ли.
Vapaamies вне форума Ответить с цитированием
Старый 05.09.2016, 17:11   #4
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
Сообщение от Neznayka2016 Посмотреть сообщение
...Что я делаю не так
Что не так? Раздражаете модераторов, вот что не так...
Видимо, правила форума вы не читали, и поэтому оформляете код цитатой вместо специального значка кода #
А раздражение модераторов выливается сначала в замечания, потом в минусы к репе, а иногда даже и в бан...
kropotkina-alice вне форума Ответить с цитированием
Старый 05.09.2016, 17:40   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
потом в минусы к репе
а вот тут не надо на модераторов, мы на репу влияем на равне с остальными.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.09.2016, 18:34   #6
Neznayka2016
Пользователь
 
Регистрация: 18.03.2016
Сообщений: 29
По умолчанию

Возможно я делаю и не правильно но на данный момент решение следующее:
Код:
unit SubComponent_U;

interface

uses
  SysUtils, Classes, Controls, StdCtrls, ExtCtrls;

type
  TMyComponent = class(TComponent)
private
    FTimerOne: TTimer;
    FTimerTwo: TTimer;
  protected
  public
    constructor Create (AOwner: TComponent); override;
  published

    property TimerOne: TTimer read FTimerOne;
    property TimerTwo: TTimer read FTimerTwo;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('MyComponents', [TMyComponent]);
end;

{ TMyCustomLabel }

constructor TMyComponent.Create(AOwner: TComponent);
begin
  inherited Create (AOwner);
  // create the internal timer object
  FTimerOne := TTimer.Create (Self);
  FTimerTwo := TTimer.Create (Self);

  FTimerOne.Name := 'Tr1';
  FTimerTwo.Name := 'Tr2';

  FTimerOne.SetSubComponent (True);
  FTimerTwo.SetSubComponent (True);
end;

end.
Neznayka2016 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти компоненты - Предлагаю сюда выкладывать различные компоненты для delphi. Deight Компоненты Delphi 79 17.09.2017 19:39
свойства в c# gylayko Помощь студентам 1 22.03.2013 17:07
Переписать с сохранением порядка следования компоненты файла F1 в файл F2, а компоненты файла F2 - в файл Алексей_1 Паскаль, Turbo Pascal, PascalABC.NET 0 20.05.2011 13:37
Компоненты и их свойства... magsim Компоненты Delphi 1 18.01.2010 13:18
Свойства файла ibn Общие вопросы .NET 0 23.04.2008 18:37