![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Задача в том чтобы поставить на форму светофор, который мог бы работать в ручном и автоматическом режиме. Светофор я нарисовал и сделал ручной режим его работы. Подскажите, как сделать чтобы светофор работал в автоматическом режиме (цвета сами по себе переключались с течением заданного времени) и возможно ли это сделать без таймеров?
|
|
#2
|
||||
|
||||
|
Поток запользовать.
|
|
#3
|
|||
|
|||
|
Цитата:
Можно еще на OnIdle "сесть" |
|
#4
|
|||
|
|||
|
а поконкретней можно, как это работает?
|
|
#5
|
|||
|
|||
|
Цитата:
|
|
#6
|
|||
|
|||
|
Можно и через таймеры, только как грамотно это сделать...? Отдельно могу сделать через три таймера (для каждого цвета свой таймер), а внедряю в программу - получается фигня. Ниже программка, может кто исправит косяк.
Последний раз редактировалось Setup_007, 28.03.2011 в 13:46. |
|
#7
|
||||
|
||||
|
вот реализация схемы:
![]() Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
CheckBox1: TCheckBox;
Timer1: TTimer;
procedure CheckBox1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
const
arr: array [0..15] of Byte = (
1, 1, 1, 1,
3, 3,
4, 4, 4, 4,
0, 4, 0, 4,
2, 2
);
implementation
{$R *.dfm}
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
Label1.Visible:=False;
Label2.Visible:=False;
Label3.Visible:=False;
Tag:=0;
Timer1.Enabled:=CheckBox1.Checked;
if Timer1.Enabled then Timer1Timer(Timer1);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Tag>=Length(arr) then Tag:=0;
Label1.Visible:=(arr[Tag] and 1)>0;
Label2.Visible:=(arr[Tag] and 2)>0;
Label3.Visible:=(arr[Tag] and 4)>0;
Tag:=Tag+1;
end;
end.0 разряд - красный цвет (десятичное 1) 1 разряд - желтый цвет (десятичное 2) 2 разряд - зеленый цвет (десятичное 4) комбинируя разряды можно получить различные режимы: группировка цветов, мигание и т.д. http://data.cod.ru/95350 |
|
#8
|
|||
|
|||
|
Огромное спасибо
Сейчас буду пробовать.. |