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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2007, 16:22   #1
Sniperok
 
Аватар для Sniperok
 
Регистрация: 24.11.2007
Сообщений: 9
По умолчанию Программа на Делфи 2006

Здравствуйте. Помогите с решением такой задачи:
Разработать компонент "Светофор", в котором последовательно "загораються" три круглые области разного цвета: красная, жёлтая, зеленая.
В компоненте реализовать свойство "Скорость переключения", события "Загорелся красный", "Загорелся жёлтый", "Загорелся зеленый".
Разработать оконное приложение с тремя элементами управления "Светофор", с возможностью задания скорости переключения для каждого сфетофора. В многострочном текстовом поле должны выводиться комментарии. Например:
Светофор №1. Загорелся красный.
Светофор №2. Загорелся красный.
Светофор №1. Загорелся жёлтый.
Светофор №3. Загорелся красный.
итд.
Вот что у меня есть на данный момент:
Код:
unit UnitTTrafficLights;
interface
uses
  SysUtils, Classes, Controls, ExtCtrls, Graphics;
type
  TTrafficLights = class(TPanel)
  private
    TSpeed:integer;
    Red,Green,Yellow,BasicColor:TColor;
    procedure Constrated; override;
    procedure Wink(TSpeed:integer);
    { Private declarations }
  protected
    { Protected declarations }
  public
  constructor Create(AOwner:TComponent);
    { Public declarations }
  published
   Timer:TTimer;
   property Speed:integer read TSpeed Write Wink;
    { Published declarations }
  end;
procedure Register;
implementation
procedure Register;
begin
  RegisterComponents('Samples', [TTrafficLights]);
end;
constructor TTrafficLights.Create (AOwner:Tcomponent);
begin
 Inherited create (AOwner);
   Timer.Create(Tspeed); {Инициализация таймера}
   Green:=clGreen;
   Red:=clRed;
   Yellow:=clYellow;
   BasicColor:=clSilver;
end;
procedure TTrafficLights.Constrated;  {Рисование свестофора}
begin
 Inherited;
  Panel.Width:=121;
  Panel.Height:=233;
  Shape1.Shape:=stCircle;
  Shape2.Shape:=stCircle;
  Shape3.Shape:=stCircle;
  Shape1.Width:=65;
  Shape2.Width:=65;
  Shape3.Width:=65;
  Shape1.Height:=65;
  Shape2.Height:=65;
  Shape3.Height:=65;
  Shape1.Top:=17;
  Shape2.Top:=88;
  Shape3.Top:=159;
  Shape1.Left:=24;
  Shape1.Left:=24;
  Shape1.Left:=24;
  Shape1.Brush.Color:=BasicColor;  {присваивание кругам начальных цветов}
  Shape2.Brush.Color:=BasicColor;
  Shape3.Brush.Color:=BasicColor;
end;

procedure TTrafficLights.Wink(TSpeed: Integer);

begin
end;
end.
<a href="http://allods.mail.ru/account.php?refid=35082"><img src="http://allods.mail.ru/media/images/referer1.jpg"/></a>
Sniperok вне форума Ответить с цитированием
Старый 28.11.2007, 16:29   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Shape1.Brush.Color:=BasicColor; {присваивание кругам начальных цветов}
Shape2.Brush.Color:=BasicColor;
Shape3.Brush.Color:=BasicColor;
Ну, и в чеи проблема? Кто мешает аналогичным образом, по таймеру, присваивать красный-желтый-зеленый?
mihali4 вне форума Ответить с цитированием
Старый 28.11.2007, 16:31   #3
Sniperok
 
Аватар для Sniperok
 
Регистрация: 24.11.2007
Сообщений: 9
По умолчанию

Цитата:
Ну, и в чеи проблема? Кто мешает аналогичным образом, по таймеру, присваивать красный-желтый-зеленый?
Не знаю как организовать это самое переключение, этих самых сигналов, да и незнаю как сделать чтобы можно было менять интервал мигания!
<a href="http://allods.mail.ru/account.php?refid=35082"><img src="http://allods.mail.ru/media/images/referer1.jpg"/></a>

Последний раз редактировалось Sniperok; 28.11.2007 в 16:34.
Sniperok вне форума Ответить с цитированием
Старый 28.11.2007, 16:59   #4
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Интервал переключение - какоето свойство таймера. (в VB оно называется interval, незнаю как в Делфи)

Присваивания нужного цвета светофору нужно прописать в событие таймера.

АДД: в Делфи тоже interval.

апример выставим интервал 1000 (это 1 секунда):

Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Edit1.Text := Edit1.Text + '1';
end;

end.
Через каждую секунду в Едит будет добавляться единичка.
---------
Цитата:
Timer1.Interval := IntTim;
А вот так можно менять свойство таймера интервал. Где IntTim - значение интервала.

--------
Цитата:
Не знаю как организовать это самое переключение, этих самых сигналов
Пользуй CASE. Смотри какой цвет у одного светофора и присваевай нужные остальным.
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...

Последний раз редактировалось Карась; 28.11.2007 в 17:14.
Карась вне форума Ответить с цитированием
Старый 29.11.2007, 17:44   #5
Sniperok
 
Аватар для Sniperok
 
Регистрация: 24.11.2007
Сообщений: 9
По умолчанию

Еше вопрос. Правильно ли в конструкторе создается таймер и как ему передавать значение интервал?
Карась при чем здесь такой код я что-то не понял!
Цитата:
Код:
view plaincopy to clipboardprint?

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Edit1.Text := Edit1.Text + '1';
end;

end.
Через каждую секунду в Едит будет добавляться единичка.
<a href="http://allods.mail.ru/account.php?refid=35082"><img src="http://allods.mail.ru/media/images/referer1.jpg"/></a>
Sniperok вне форума Ответить с цитированием
Старый 29.11.2007, 19:03   #6
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Эт до кучи так чказать написал.. вдруг ты незнаешь как таймер пользовать.

Вот так менять можно. Можно сделать ползунок (на мой взгляд лучше).
Вложения
Тип файла: rar Svet.rar (162.2 Кб, 31 просмотров)
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 29.11.2007, 20:43   #7
Sniperok
 
Аватар для Sniperok
 
Регистрация: 24.11.2007
Сообщений: 9
По умолчанию

Да в визуально это делается легко, я и так это мог зделать, но есть одна маленькая загвоздочка в 2007 делфи нельзя компонент програмировать физуально. Только командами!

Да в визуально это делается легко, я и так это мог зделать, но есть одна маленькая загвоздочка в 2006 делфи нельзя компонент програмировать физуально. Только командами!

Народ сколько будет стоить решение этой задачи?

Люди помогите решить эту задачу! Согласен заплатить!
<a href="http://allods.mail.ru/account.php?refid=35082"><img src="http://allods.mail.ru/media/images/referer1.jpg"/></a>

Последний раз редактировалось Stilet; 27.12.2010 в 19:23.
Sniperok вне форума Ответить с цитированием
Старый 04.12.2007, 16:16   #8
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Задание лажовое. ты половину написал.Правда я всё переделал. ))

Я, никогда непрограмировал в делфи, с горем попалам дописываю этот светофор.
Он моргает как и положенно сфетофору. Скорость регулируется скролбаром до 2 сек.
Как даделаю выложу... Пока идёт исправление косяков.

А ты шаришь в английском? Перевод там...

Годится?....
Вложения
Тип файла: rar Project1.rar (155.1 Кб, 28 просмотров)
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...

Последний раз редактировалось Stilet; 27.12.2010 в 19:26.
Карась вне форума Ответить с цитированием
Старый 05.12.2007, 17:29   #9
Sniperok
 
Аватар для Sniperok
 
Регистрация: 24.11.2007
Сообщений: 9
По умолчанию

Спасибо конечно! Но есть один нюанс который и составляет трудность! Это то что компонент нельзя программировать визуально! Надо все прописывать в ручную! И кстати во вложении нет исходника! Такую прогы с помощью визуального легко написать, а вот чтобы она как компонент была вот это трудно! В прикрепленном файле пример как создавать компонент, мой примерно так же должен выглядеть!
Вложения
Тип файла: rar TMyValue__primer_sozdaniya_komponenta.rar (307.0 Кб, 23 просмотров)
<a href="http://allods.mail.ru/account.php?refid=35082"><img src="http://allods.mail.ru/media/images/referer1.jpg"/></a>
Sniperok вне форума Ответить с цитированием
Старый 05.12.2007, 19:11   #10
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Дык у меня все через канвас рисуется на форме. Я на форму только скролбар перетащил.

Код:
procedure TForm1.Timer1Timer(Sender: TObject);
Label End_tim;
begin

PatBlt(Form1.Canvas.Handle,0,0,Form1.ClientWidth,
Form1.ClientHeight,
WHITENESS);
Form1.canvas.Brush.Color := clSilver;
Form1.Canvas.Rectangle(102, 58,58, 182);

if Color_el = 'Red' then begin
       Form1.canvas.Brush.Color := ClYellow;
       Form1.Canvas.Ellipse(60, 100, 100, 140);
       Color_el := 'Yellow';
       Goto End_tim;
       End;
if Color_el = 'Yellow' then begin
          Form1.canvas.Brush.Color := ClGreen;
          Form1.canvas.Ellipse(60, 140, 100, 180);
          Color_el := 'Green';
          Goto End_tim;
          End;
if Color_el = 'Green' then begin
         Form1.canvas.Brush.Color := ClRed;
         Form1.Canvas.Ellipse(100, 60, 60, 100);
         Color_el := 'Red';
         Goto End_tim;
         End;
End_tim:
end;

procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
Timer1.Interval := Scrollbar1.Position;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Color_el := 'Red';
end;

end.
Ну а дальше наверное несложно компанент сделать....
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите где можно скачать триальную версию BDS 2006, Delphi 2006 или С++Builder. gennad_ugryumov Софт 3 28.01.2009 18:00
Программа для диплома на Делфи Сластёнка Помощь студентам 1 29.05.2008 12:42
Нужна программа на Делфи Формула Фриланс 1 07.01.2008 22:30
Курсовик Делфи 2006 Sniperok Фриланс 4 08.12.2007 12:47
BDS 2006... =*=|/|MM0PT@/\=*= Софт 0 25.01.2007 01:27