|
#1
|
|||
|
|||
Светофор
Всем привет!
простите за неуважение что не стал искать есть ли подобные темы. вот Сам вопрос Необходимо создать компонент "Светофор" я попробовал его создать на основе TCustomPanel, сделал 3 таймера, создал 3 Shape, но теперь проблема не могу сделать так чтобы хотя бы один из таймеров заработал ! помогите пожалуйста что ли бо исправить в моем исходнике или может предложите свой вариант, особо прошу не ругать давно не программировал Код:
unit Custom; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; Var Timer1:TTimer; Timer2:TTimer; Timer3:TTimer; type TCustom = class(TCustomPanel) private { Private declarations } FRED :TShape; FYELLOW :TShape; FGREEN :TShape; FT_I1 :integer; FT_I2 :integer; FT_I3 :integer; //FEnabled :TNotifyEvent; FOn_1 :boolean; FOn_2 :boolean; FOn_3 :boolean; procedure TimerEvent_1(Sender: TObject); procedure TimerEvent_2(Sender: TObject); procedure TimerEvent_3(Sender: TObject); procedure SetFOn_1(Value: boolean); protected { Protected declarations } procedure T1;//(Sender: Tobject); procedure T2;//(Sender: Tobject); procedure T3;//(Sender: Tobject); procedure Custom_enabled; public { Public declarations } constructor Create(AOwner:TComponent); override; published { Published declarations } property T1_interval: integer read FT_I1 write FT_I1; property T2_interval: integer read FT_I2 write FT_I2; property T3_interval: integer read FT_I3 write FT_I3; property On_1: boolean read FOn_1 write FOn_1; property On_2: boolean read FOn_2 write FOn_2; property On_3: boolean read FOn_3 write FOn_3; // property Enabled: TNotifyEvent read FEnabled write FEnabled; end; procedure Register; implementation procedure Register; begin RegisterComponents('Standard', [TCustom]); end; constructor TCustom.Create(AOwner: TComponent); begin inherited Create(AOwner); On_1 :=False; Width := 60; Height := 160; T1_interval:=1000; T2_interval:=200; T3_interval:=1000; Timer1 := TTimer.Create(Self); //T1 Timer1.Interval := T1_interval; Timer1.OnTimer :=TimerEvent_1; Timer1.Enabled := On_1; Timer2 := TTimer.Create(Self); //T2 Timer2.Interval := T2_interval; Timer2.OnTimer :=TimerEvent_2; Timer2.Enabled := On_2; Timer3 := TTimer.Create(Self); //T3 Timer3.Interval := T3_interval; Timer3.OnTimer :=TimerEvent_3; Timer3.Enabled := On_3; FRED:=TShape.Create(Self); //Красный FRED.Parent:=Self; FRED.Left:=10; FRED.Top:=10; FRED.Width:=40; FRED.Height:=40; FRED.Shape:=stCircle; FRED.Pen.Color:=clBlack; FRED.Pen.Width:=40; FYELLOW:=TShape.Create(Self); //Желтый FYELLOW.Parent:=Self; FYELLOW.Left:=10; FYELLOW.Top:=60; FYELLOW.Width:=40; FYELLOW.Height:=40; FYELLOW.Shape:=stCircle; FYELLOW.Pen.Color:=clBlack; FYELLOW.Pen.Width:=40; FGREEN:=TShape.Create(Self); //Зеленый FGREEN.Parent:=Self; FGREEN.Left:=10; FGREEN.Top:=110; FGREEN.Width:=40; FGREEN.Height:=40; FGREEN.Shape:=stCircle; FGREEN.Pen.Color:=clBlack; FGREEN.Pen.Width:=40; end; procedure TCustom.Custom_enabled; begin //if Assigned(FEnabled) then FEnabled(Self); //if On_1 = true then Timer1.Enabled:=true; //showmessage('t1_on'); //T1; end; procedure TCustom.T1; begin //Timer2.Enabled:=true; //showmessage('t1_on'); //T2; end; procedure TCustom.T2; begin //Timer3.Enabled:=true; //showmessage('t2_on'); //T3; end; procedure TCustom.T3; begin //Timer1.Enabled:=true; //showmessage('t3_on'); //T1; end; procedure TCustom.TimerEvent_1(Sender: TObject); begin showmessage('t1_on'); { вот ваш обработчик события, который вызывается при каждом срабатывании таймера - делайте здесь все что вам необходимо } end; procedure TCustom.TimerEvent_2(Sender: TObject); begin showmessage('t2_on'); { вот ваш обработчик события, который вызывается при каждом срабатывании таймера - делайте здесь все что вам необходимо } end; procedure TCustom.TimerEvent_3(Sender: TObject); begin showmessage('t3_on'); { вот ваш обработчик события, который вызывается при каждом срабатывании таймера - делайте здесь все что вам необходимо } end; procedure Tcustom.SetFOn_1(Value : boolean); begin On_1:=true; end; end. Последний раз редактировалось Admin, 29.03.2011 в 14:09. |
#2
|
||||
|
||||
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
немного не понел, мне нужно чтобы взять компонент с панели через кнопочку послать старт и чтоб оно работало, а в инспекторе если того требуется задать время
|
#4
|
||||
|
||||
вчера вечером было скучно, вот набросал светофор:
http://data.cod.ru/95662 после установки находится на вкладке: RegisterComponents('Internet', [TSvetoforControl]); свойства: public property Red: Boolean read FRed; - красный горит? можно проверять в OnTick, например property Yellow: Boolean read FYellow; - желтый горит? property Green: Boolean read FGreen; - зеленый горит? property Counter: Integer read FCounter; - номер такта procedure Start; - запустить procedure Stop; - остановить (выключить) published property Active: Boolean read GetActive write SetActive; - включен/выключен? можно менять в design time property OnTick: TNotifyEvent read FOnTick write FOnTick; - тактовое событие Пишу программы за еду. __________________ |
#5
|
|||
|
|||
=)
спасибо огромное то что доктор прописал
|