Главная страница
    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.45 MB
Время: 0.072 c
2-1162373363
JTAG
2006-11-01 12:29
2006.11.19
Господа подскажите плз как узнать открыт ли файл?


6-1151469279
grab3
2006-06-28 08:34
2006.11.19
VPN/DIALUP соединения


15-1162062209
lookin
2006-10-28 23:03
2006.11.19
Думаю, вы знаете, что когда () - меня немножко прет...


15-1162310042
Cyrax
2006-10-31 18:54
2006.11.19
Кодинг COM-порта на Win32API


1-1160577324
DelphiLexx
2006-10-11 18:35
2006.11.19
MDI и TTBToolBar





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский