Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/196: Рейтинг темы: голосов - 196, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 21.01.2010
Сообщений: 12

Имитировать на экране работу электронных часов

21.01.2010, 00:52. Показов 39874. Ответов 63
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите реализовать программу.
Имитировать на экране работу электронных часов.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.01.2010, 00:52
Ответы с готовыми решениями:

Программа, имитирующая работу часов
Здравствуйте. Составить программу, имитирующую работу часов с часовой, минутной и секундной стрелкой в виртуальном режиме времени....

Получить на экране изображение действующих электронных часов, показывающих текущее время
3) Получить на экране изображение действующих электронных часов, показывающих текущее время. Шаблоны используемых цифр должны...

Получить на экране изображение электронных часов, показывающих время, вводимых пользователем
Получить на экране изображение электронных часов, показывающих время, вводимых пользователем. Шаблоны используемых цифр должны...

63
Тимуровец
 Аватар для Страдалецъ
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
13.03.2010, 14:35
Студворк — интернет-сервис помощи студентам
Создайте в том-же дельфи новый unit и замените его содержимое предложенным мною для dpk. Сохраните с именем slDigitSymbol.dpk
1
ﻌﺹ ﺦ ﺖﻀ ﺹ ﻙ ﺵﻔ ﺊ ﺘﺝ
 Аватар для *~<`PIK`>~*
607 / 387 / 81
Регистрация: 15.12.2009
Сообщений: 753
13.03.2010, 14:54
Я вот когда-то делал цифровые часы.
Вложения
Тип файла: zip часы.zip (338.3 Кб, 269 просмотров)
0
ﻌﺹ ﺦ ﺖﻀ ﺹ ﻙ ﺵﻔ ﺊ ﺘﺝ
 Аватар для *~<`PIK`>~*
607 / 387 / 81
Регистрация: 15.12.2009
Сообщений: 753
13.03.2010, 14:55
там по нажатию правой клавиши настройки и т.д.)))
0
Тимуровец
 Аватар для Страдалецъ
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
13.03.2010, 15:01
Это несколько не то о чем идет речь в данной теме. Прочитайте тему с начала.
1
ﻌﺹ ﺦ ﺖﻀ ﺹ ﻙ ﺵﻔ ﺊ ﺘﺝ
 Аватар для *~<`PIK`>~*
607 / 387 / 81
Регистрация: 15.12.2009
Сообщений: 753
13.03.2010, 15:18
если нужны красивые циферки то можно создать компонент или использовать уже готовый компонент LCDNumber в CLX Application
0
 Аватар для kentaw
421 / 130 / 33
Регистрация: 24.02.2009
Сообщений: 1,122
13.03.2010, 15:21
Цитата Сообщение от Страдалецъ Посмотреть сообщение
Создайте в том-же дельфи новый unit и замените его содержимое предложенным мною для dpk. Сохраните с именем slDigitSymbol.dpk
[Fatal Error] DigitSymbol.pas(51): File not found: 'DesignIntf.dcu'
0
Тимуровец
 Аватар для Страдалецъ
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
13.03.2010, 19:54
Это стандартный модуль, входит в комплект дельфи. У вас какая версия Дельфи?
1
 Аватар для kentaw
421 / 130 / 33
Регистрация: 24.02.2009
Сообщений: 1,122
14.03.2010, 09:24
У меня семерка. Я установил Вашу компоненту, и он появлялся на палитре, Sufferel Component. Кинул эту компоненту на форму, но при компиляцие выдает вышеуказанное ошибку...
А Вы можете создать простую пример, чтоб было ясно нам
0
Тимуровец
 Аватар для Страдалецъ
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
14.03.2010, 11:07
Не совсем понял, что создать?
1
 Аватар для kentaw
421 / 130 / 33
Регистрация: 24.02.2009
Сообщений: 1,122
14.03.2010, 11:15
Создай часы, с этими компонентами. И вложи суда
0
Тимуровец
 Аватар для Страдалецъ
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
14.03.2010, 12:08
Так, провел эксперименты с D7.
Верно есть проблемка, переписал с учетом 7-й версии:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
unit DigitSymbol;
 
interface
 
uses
  SysUtils, Classes, Controls, Graphics;
 
type
  TMaskItem = (smTop,smTopRight,smBottomRight,smBottom,smBottomLeft,smTopLeft,smMiddle);
  TSymbolMask = set of TMaskItem;
  TSymbolTemplate = (tmZero,tmOne,tmTwo,tmThree,tmFour,tmFive,tmSix,tmSeven,tmEight,tmNine,tmUser);
 
const
  smZero: TSymbolMask = [smTop,smTopRight,smBottomRight,smBottom,smBottomLeft,smTopLeft];
  smOne: TSymbolMask = [smTopRight,smBottomRight];
  smTwo: TSymbolMask = [smTop,smTopRight,smBottomLeft,smBottom,smMiddle];
  smThree: TSymbolMask = [smTop,smTopRight,smBottomRight,smBottom,smMiddle];
  smFour: TSymbolMask = [smTopRight,smBottomRight,smTopLeft,smMiddle];
  smFive: TSymbolMask = [smTop,smBottomRight,smBottom,smTopLeft,smMiddle];
  smSix: TSymbolMask = [smTop,smBottomRight,smBottom,smTopLeft,smBottomLeft,smMiddle];
  smSeven: TSymbolMask = [smTop,smTopRight,smBottomRight];
  smEight: TSymbolMask = [smTop,smTopRight,smBottomRight,smBottom,smBottomLeft,smTopLeft,smMiddle];
  smNine: TSymbolMask = [smTop,smTopRight,smBottomRight,smBottom,smTopLeft,smMiddle];
 
type
  TDigitSymbol = class(TGraphicControl)
   private
    fTemplate: TSymbolTemplate;
    fMask: TSymbolMask;
    fFillColor: TColor;
    fBorderColor: TColor;
    fBorderWidth: Integer;
    procedure SetSymbolMask(const Value: TSymbolMask);
    procedure SetSymbolTemplate(const Value: TSymbolTemplate);
    procedure SetBorderWidth(const Value: Integer);
    procedure SetColor(Index: Integer; const Value: TColor);
   public
    constructor Create(AOwner: TComponent); override;
    procedure Paint; override;
   published
    property Mask: TSymbolMask read fMask write SetSymbolMask;
    property Template: TSymbolTemplate read fTemplate write SetSymbolTemplate;
    property BorderWidth: Integer read fBorderWidth write SetBorderWidth;
    property FillColor: TColor index 0 read fFillColor write SetColor;
    property BorderColor: TColor index 1 read fBorderColor write SetColor;
  end;
 
procedure Register;
 
implementation
 {$IFNDEF VER150} Uses DesignIntf; {$ENDIF}
 
procedure Register;
begin
 RegisterComponents('Sufferer Components', [TDigitSymbol]);
 {$IFNDEF VER150} 
 RegisterPropertyEditor(TypeInfo(TCursor),TDigitSymbol,'Cursor',nil);
 RegisterPropertyEditor(TypeInfo(THelpType),TDigitSymbol,'HelpType',nil);
 RegisterPropertyEditor(TypeInfo(TCustomHint),TDigitSymbol,'CustomHint',nil);
 RegisterPropertyEditor(TypeInfo(Boolean),TDigitSymbol,'ParentCustomHint',nil);
 RegisterPropertyEditor(TypeInfo(THelpContext),TDigitSymbol,'HelpContext',nil);
 RegisterPropertyEditor(TypeInfo(String),TDigitSymbol,'HelpKeyword',nil);
 RegisterPropertyEditor(TypeInfo(Integer),TDigitSymbol,'Tag',nil);
 {$ENDIF}
end;
 
constructor TDigitSymbol.Create(AOwner: TComponent);
begin
 inherited;
 fMask := smEight;
 fFillColor := clLime;
 fBorderColor := clMoneyGreen;
 fBorderWidth := 1;
 Width := 40;
 Height := 70;
end;
 
procedure TDigitSymbol.Paint;
Var
  Dx,Dy: Integer;
  Brick: TMaskItem;
begin
 inherited;
 Dx := Width div 8;
 Dy := Height div 14;
 Canvas.Pen.Color := fBorderColor;
 Canvas.Pen.Width := fBorderWidth;
 Canvas.Brush.Color := fFillColor;
 for Brick := Low(TMaskItem) to High(TMaskItem)
 do if Brick in Mask then
    case Brick
    of smTop: Canvas.Polygon([Point(Dx*2,0),Point(Dx*6,0),Point(Dx*7,Dy),Point(Dx*6,Dy*2),Point(Dx*2,Dy*2),Point(Dx,Dy)]);
       smTopRight: Canvas.Polygon([Point(Dx*6,Dy*2),Point(Dx*7,Dy),Point(Dx*8,Dy*2),Point(Dx*8,Dy*6),Point(Dx*7,Dy*7),Point(Dx*6,Dy*6)]);
       smBottomRight: Canvas.Polygon([Point(Dx*6,Dy*8),Point(Dx*7,Dy*7),Point(Dx*8,Dy*8),Point(Dx*8,Dy*12),Point(Dx*7,Dy*13),Point(Dx*6,Dy*12)]);
       smBottom: Canvas.Polygon([Point(Dx*2,Dy*12),Point(Dx*6,Dy*12),Point(Dx*7,Dy*13),Point(Dx*6,Dy*14),Point(Dx*2,Dy*14),Point(Dx,Dy*13)]);
       smBottomLeft: Canvas.Polygon([Point(0,Dy*8),Point(Dx,Dy*7),Point(Dx*2,Dy*8),Point(Dx*2,Dy*12),Point(Dx,Dy*13),Point(0,Dy*12)]);
       smTopLeft: Canvas.Polygon([Point(0,Dy*2),Point(Dx,Dy),Point(Dx*2,Dy*2),Point(Dx*2,Dy*6),Point(Dx,Dy*7),Point(0,Dy*6)]);
       smMiddle: Canvas.Polygon([Point(Dx*2,Dy*6),Point(Dx*6,Dy*6),Point(Dx*7,Dy*7),Point(Dx*6,Dy*8),Point(Dx*2,Dy*8),Point(Dx,Dy*7)]);
       end;
end;
 
procedure TDigitSymbol.SetBorderWidth(const Value: Integer);
begin
 if fBorderWidth <> Value
 then begin
      fBorderWidth := Value;
      Invalidate;
      end;
end;
 
procedure TDigitSymbol.SetColor(Index: Integer; const Value: TColor);
begin
 case Index
 of 0: if fFillColor <> Value then fFillColor := Value;
    1: if fBorderColor <> Value then fBorderColor := Value;
    else Exit;
 end;
 Invalidate;
end;
 
procedure TDigitSymbol.SetSymbolMask(const Value: TSymbolMask);
begin
 if fMask <> Value
 then begin
      fMask := Value;
      fTemplate := tmUser;
      if Value = smZero then Template := tmZero;
      if Value = smOne then Template := tmOne;
      if Value = smTwo then Template := tmTwo;
      if Value = smThree then Template := tmThree;
      if Value = smFour then Template := tmFour;
      if Value = smFive then Template := tmFive;
      if Value = smSix then Template := tmSix;
      if Value = smSeven then Template := tmSeven;
      if Value = smEight then Template := tmEight;
      if Value = smNine then Template := tmNine;
      Invalidate;
      end;
end;
 
procedure TDigitSymbol.SetSymbolTemplate(const Value: TSymbolTemplate);
begin
 if Value <> fTemplate
 then begin
      fTemplate := Value;
      case Value
      of tmZero: fMask := smZero;
         tmOne: fMask := smOne;
         tmTwo: fMask := smTwo;
         tmThree: fMask := smThree;
         tmFour: fMask := smFour;
         tmFive: fMask := smFive;
         tmSix: fMask := smSix;
         tmSeven: fMask := smSeven;
         tmEight: fMask := smEight;
         tmNine: fMask := smNine;
         else fTemplate := tmUser;
         end;
      Invalidate;
      end;
end;
 
end.
У меня все собирается и компилируется нормально под Delphi 7.2
2
 Аватар для kentaw
421 / 130 / 33
Регистрация: 24.02.2009
Сообщений: 1,122
15.03.2010, 12:07
Спасибо, Страдалецъб за компонента. Все получилос
Вложения
Тип файла: rar With Sufferer Components.rar (172.5 Кб, 154 просмотров)
1
4 / 4 / 1
Регистрация: 15.05.2009
Сообщений: 57
15.03.2010, 17:20
Цитата Сообщение от kentaw Посмотреть сообщение
Спасибо, Страдалецъб за компонента. Все получилос
Поддерживаю. И Вам спасибо за проект, очень помог!!!!!!
0
4 / 4 / 1
Регистрация: 15.05.2009
Сообщений: 57
16.03.2010, 09:26
Возникла небольшая проблема.вчера все работало замечательно, а сегодня когда запустил начали выдаваться ошибки. Сначала думал, что я чего-то подправил когда компилил, но потом скачал заново с сайта, а результат такой же. Попробовал отловить -не вышло, но я так понял они где-то в преобразовании времени... хотя могу и ошибаться.
2 Страдалецъ поясните,пожалуйста, код свой, а то запутался я там немного...
Миниатюры
Имитировать на экране работу электронных часов   Имитировать на экране работу электронных часов  
0
 Аватар для kentaw
421 / 130 / 33
Регистрация: 24.02.2009
Сообщений: 1,122
16.03.2010, 10:04
Ясно. Ты заменил переменные. Должна быт так:
Delphi
1
2
3
4
5
6
t1:=time[1];
t2:=time[2];
t3:=time[4];//А Не time[3]!!!!!!  Он равен ":"
t4:=time[5];
t5:=time[6];
t6:=time[8];//А Не time[7]!!!!!!
0
4 / 4 / 1
Регистрация: 15.05.2009
Сообщений: 57
16.03.2010, 10:24
"Дорогая ты не поверишь"!!!!! Оно заработало. Я ничего не менял как оказалось, оно просто взяло и заработало! я проверил на 3х разный компах, не работало, а щас...
0
 Аватар для Андрей Борисови
714 / 402 / 33
Регистрация: 04.10.2009
Сообщений: 1,686
16.03.2010, 10:29
Возмите компонент
RzLEDDisplay набора Rz
или любой другой TLED
0
4 / 4 / 1
Регистрация: 15.05.2009
Сообщений: 57
16.03.2010, 10:59
Ошибку нашел) осталось узнать как её исправить. Ошибка возникаемт когда масдай передает время от 0:00:00 до 9:59:59. То есть если значения минут состоит из 1 символа, то тогды вываливается эта ошибка.

Добавлено через 7 минут
Цитата Сообщение от BEL9ILLI Посмотреть сообщение
То есть если значения минут состоит из 1 символа, то тогды вываливается эта ошибка.
Поправочка: не минут, а часов

Добавлено через 6 минут
kentaw, А у вас если время стоит 10 или 20 часов, нолик на 8 не меняется?
1
4 / 4 / 1
Регистрация: 15.05.2009
Сообщений: 57
16.03.2010, 11:08
С нулями тут что-то не то...
Миниатюры
Имитировать на экране работу электронных часов  
0
 Аватар для kentaw
421 / 130 / 33
Регистрация: 24.02.2009
Сообщений: 1,122
16.03.2010, 11:15
[QUOTE=BEL9ILLI;601970]Ошибку нашел) осталось узнать как её исправить. Ошибка возникаемт когда масдай передает время от 0:00:00 до 9:59:59. То есть если значения минут состоит из 1 символа, то тогды вываливается эта ошибка.
замени
кусочек
Delphi
1
2
3
4
5
6
  t1:=StrToInt(time[1]);
  t2:=StrToInt(time[2]);
  t3:=StrToInt(time[4]);
  t4:=StrToInt(time[5]);
  t5:=StrToInt(time[7]);
  t6:=StrToInt(time[8]);
на

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  if Length(time)=8 then begin
   t1:=StrToInt(time[1]);
   t2:=StrToInt(time[2]);
   t3:=StrToInt(time[4]);
   t4:=StrToInt(time[5]);
   t5:=StrToInt(time[7]);
   t6:=StrToInt(time[8]);
  end
  else begin
   t1:=0;
   t2:=StrToInt(time[1]);
   t3:=StrToInt(time[3]);
   t4:=StrToInt(time[4]);
   t5:=StrToInt(time[6]);
   t6:=StrToInt(time[7]);
  end;
Добавлено через 1 минуту
Цитата Сообщение от BEL9ILLI Посмотреть сообщение
Ошибку нашел)
kentaw, А у вас если время стоит 10 или 20 часов, нолик на 8 не меняется?
ок, ша поправим

Добавлено через 2 минуты
вот
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.FormCreate(Sender: TObject);
begin
   DigitSymbol1.Template:=tmZero;
   DigitSymbol2.Template:=tmZero;
   DigitSymbol3.Template:=tmZero;
   DigitSymbol4.Template:=tmZero;
   DigitSymbol5.Template:=tmZero;
   DigitSymbol6.Template:=tmZero;
end;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.03.2010, 11:15

Показания электронных часов
Даны показания электронных часов и промежуток времени в виде часы минуты секунды. Определите показания часов через указанный промежуток...

Показания электронных часов (2) :c
Даны показания электронных часов в течение суток, которые определяют начало и конец промежутка времени. Определить длину промежутка времени...

Текущее показание электронных часов
Помогите с задачей по лабе,просто не знаю как сделать,ведь нужно чтобы время конвертировалось.. Задача:Текущее показание электронных...

Текущие показатели электронных часов
Текущие показатели электронных часов m часов (0&lt;=m&lt;=23), n мин (0&lt;=n&lt;=59). Какое время будут показывать часы через p час q мин?

Настройка кнопок для электронных часов
Добрый вечер! Задали сделать электронные часы с будильником, часы собрала, все работает, но не знаю как настраивать кнопки в ассемблере....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru