Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];

Вниз

Проблема с присвоением имени новому компоненту   Найти похожие ветки 

 
Volf_555 ©   (2006-03-24 21:48) [0]

Написал компонент - аналог кнопке. Вот он:

unit CountButton;

interface

uses
 Windows, Messages, SysUtils, Classes, Controls, StdCtrls, Dialogs, ExtCtrls;

var
Timer:TTimer;

type
 TShowType = (Normal, CountToCaption);
 TCountButton = class(TButton)
 private
   { Private declarations }
   FCount:Integer;
   FShowType:TShowType;
 protected
   { Protected declarations }
   procedure Click; override;
   procedure OnTimer(Sender:TObject);
 public
   { Public declarations }
   procedure ShowCount;
 published
   { Published declarations }
   constructor Create(AOwner:TComponent);override; //Конструктор
   property Count:Integer read FCount write FCount; //Свойство Count
   property ShowType:TShowType read FShowType write FShowType;
 end;

procedure Register;

implementation

constructor TCountButton.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
Timer:=TTimer.Create(AOwner);
Timer.Enabled:=True;
Timer.OnTimer:=OnTimer;
Timer.Interval:=10000;
end;

procedure TCountButton.Click;
begin
inherited Click;
FCount:=FCount+1;
if ShowType=Normal then
 Caption:=Caption;
if ShowType=CountToCaption then
 Caption:="Count = "+IntToStr(count);
end;

procedure TCountButton.ShowCount;
begin
ShowMessage("По кнопке "+caption+" вы сделали: "+IntToStr(FCount)+" клик(а/ов)");
end;

procedure TCountButton.OnTimer(Sender:TObject);
begin
FCount:=FCount*2;
end;

procedure Register;
begin
 RegisterComponents("MyComponents", [TCountButton]);
end;

end.


После добавления компонента на форму, кроме него появляется Timer, НО БЕЗ ИМЕНИ!!!! То есть поле Name - пустое!

Что добавить в код компонента чтобы поле Name заполнялось автоматически?


 
novice_man ©   (2006-03-25 09:23) [1]

А где TIMERу ты присвоил имя?


 
Юрий Зотов ©   (2006-03-25 12:47) [2]

> Volf_555 ©   (24.03.06 21:48)

Имя компонента не возникает ниоткуда, само по себе. Когда мы кладем компонент на форму вручную, то его создает среда разработки (IDE) и она же назначает ему имя. А в Вашем случае компонент создается другим компонентом, о чем IDE не знает и поэтому ничего назначить не может. Компонент-создатель тоже никакого имени не назначает, а больше ему взяться неоткуда - поэтому оно, естественно, остается пустым.

Вообще, код принципиально неверен, компоненты так не пишут. Если владельцем таймера должна быть именно форма, как это сделано у Вас (кстати, непонятно, зачем) то Вашему компоненту совершенно незачем создавать этот таймер, он просто должен содержать свойство-ссылку на внешний таймер - и пусть эту ссылку проставляет юзер (пример - PopupMenu).

А если форма не обязана быть владельцем таймера, то код надо исправить и сделать владельцем таймера создающий его компонент. Тогда никакое имя таймеру и не нужно.



Страницы: 1 вся ветка

Форум: "Компоненты";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.052 c
5-1143100549
Vopros
2006-03-23 10:55
2006.11.19
цвет строки и разделительных линий TStringGrid


4-1152249262
MN
2006-07-07 09:14
2006.11.19
Как менять всплывающую подсказку программы в трее


15-1162041151
DillerXX
2006-10-28 17:12
2006.11.19
Все дружно поздравляем обладателя хорошего LCD монитора :о)


6-1151571226
wasserman
2006-06-29 12:53
2006.11.19
idTcpClient & HTTP Post


15-1162213008
ZeroDivide
2006-10-30 15:56
2006.11.19
Заполняем анкетку





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский