0 / 0 / 0
Регистрация: 21.01.2010
Сообщений: 12
1

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

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

Здравствуйте, помогите реализовать программу.
Имитировать на экране работу электронных часов.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.01.2010, 00:52
Ответы с готовыми решениями:

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

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

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

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

63
Добрый самаритянин
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
21.01.2010, 00:57 2
а в чем проблем??? кидай на форму label и таймер.
В таймере интервал 1 сек и пиши в нем код
Delphi
1
label1.caption:=TimeToStr(Time);
1
9715 / 2470 / 52
Регистрация: 06.03.2009
Сообщений: 8,500
21.01.2010, 00:58 3
Лучший ответ Сообщение было отмечено как решение

Решение

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
unit Unit1;
 
interface
 
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls;
 
type
 TForm1 = class(TForm)
  Timer1: TTimer;
  Label1: TLabel; // время
  Label2: TLabel; // дата и день недели
  procedure Timer1Timer(Sender: TObject);
  procedure FormCreate(Sender: TObject);
  procedure FormPaint(Sender: TObject);
  procedure ShowTime;
 private
  { Private declarations }
 public
  { Public declarations }
 end;
 
var
 Form1: TForm1;
 
implementation
 
                                                           
const
  stDay : array[1..7] of string[11] =
    ('воскресенье','понедельник','вторник',
     'среда','четверг','пятница','суббота');
 
  stMonth : array[1..12] of string[8] =
    ('января','февраля','марта',
     'апреля','мая','июня','июля',
     'августа','сентября','октября',
     'ноября','декабря');
 
{$R *.dfm}
procedure TForm1.ShowTime;
var Time : TDateTime; // текущее время
begin
 Time := Now(); // получить системное время
 Label1.Caption := FormatDateTime('hh:mm:ss',Time);
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  ShowTime; // отобразить время
end;
 
procedure TForm1.FormCreate(Sender: TObject);
var
 Present: TDateTime;      // текущая дата и время
 Year, Month, Day : Word; // год, месяц и число, как
                 // отдельные числа
begin
 Present:= Now; // получить текущую дату
 DecodeDate(Present, Year, Month, Day);
 Label2.Caption := 'Сегодня '+IntToStr(Day)+ ' ' +
  stMonth[Month] + ' '+ IntToStr(Year)+
  ' года, '+ stDay[DayOfWeek(Present)];
 
 // настроить и запустить таймер
 Timer1.Interval := 1000; // период сигналов таймера 1 с
 Timer1.Enabled := True; // пуск таймера
end;
 
procedure TForm1.FormPaint(Sender: TObject);
begin
  ShowTime; // отобразить часы
end;
 
end.
3
0 / 0 / 0
Регистрация: 21.01.2010
Сообщений: 12
21.01.2010, 01:23  [ТС] 4
Спасибо.
0
Тимуровец
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
21.01.2010, 01:28 5
Только это не электронные часы в общепринятом виде. Цифры в электронных часах формируются иначе.
1
70 / 70 / 3
Регистрация: 29.09.2009
Сообщений: 530
21.01.2010, 01:38 6
Страдалецъ, не совсем я понимаю, что вам нужно. Помоему уже все готовенькое выложили...
0
Тимуровец
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
21.01.2010, 02:05 7
Да мне-то особо ничего не надо, а вот электронные часы выглядят примерно так:
Изображения
 
1
0 / 0 / 0
Регистрация: 21.01.2010
Сообщений: 12
21.01.2010, 02:24  [ТС] 8
Цитата Сообщение от Страдалецъ Посмотреть сообщение
Да мне-то особо ничего не надо, а вот электронные часы выглядят примерно так:
а можешь подсказать как их сделать?
0
Тимуровец
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
21.01.2010, 02:29 9
Лучший ответ Сообщение было отмечено как решение

Решение

Могу.
Делаете матрицу такого вида:
Delphi
1
Digits: Array[0..9] of String[7] = ('1111110','0110000','1101101' ....);
Где прописываете состояние элемента в матрице цифры. 7 элементов на 10 цифр.
Далее отрисовываете цифру состоящую из 7 элементов. (Я иду по часовой стрелке и последний элемент находится в центре.)
Примерно так:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure DigitPaint(Digit: Byte);
Var
  i: Integer;
begin
 PaintBox1.Canvas.Pen.Color := clGray;
 PaintBox1.Canvas.Brush.Color := clMedGray;
 for i := 1 to 7
 do begin
    case i of
     1: PaintBox1.Canvas.Polygon([Point(D,D),Point(D*6,D),Point(D*5,D*2),Point(D*2,D*2)]);
     2: PaintBox1.Canvas.Polygon([Point(D*6+1,D+1),Point(D*6+1,D*6),Point(D*5+1,D*5),Point(D*5+1,D*2+1)]);
...
А вот для получения времени вы уже можете использовать то что вам дали ранее.
4
0 / 0 / 0
Регистрация: 21.01.2010
Сообщений: 12
21.01.2010, 02:42  [ТС] 10
Спасибо Страдалецъ
0
Sp
5 / 5 / 2
Регистрация: 02.11.2009
Сообщений: 236
Записей в блоге: 1
23.01.2010, 15:53 11
А где взять PaintBox1
0
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
23.01.2010, 16:27 12
палитра компонентов system - paintbox
1
Sp
5 / 5 / 2
Регистрация: 02.11.2009
Сообщений: 236
Записей в блоге: 1
24.01.2010, 08:47 13
Спасибо
А еще вопрос
DigitPaint это откуда???
0
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
24.01.2010, 11:52 14
Цитата Сообщение от Sp Посмотреть сообщение
Спасибо
А еще вопрос
DigitPaint это откуда???
DigitPaint - это просто название процедуры(Ну вот хотел он и назвал так)
1
Sp
5 / 5 / 2
Регистрация: 02.11.2009
Сообщений: 236
Записей в блоге: 1
24.01.2010, 14:07 15
Спасибо
Попозже попробую разобратся
0
4 / 4 / 1
Регистрация: 15.05.2009
Сообщений: 57
12.03.2010, 15:18 16
Господа, ни у кого готового кода нет?
0
Тимуровец
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
12.03.2010, 20:02 17
Я тогда воодушевленный этой темой нарисовал компонентик для отрисовки цифры от 0 до 9 в этом стиле. Выглядит результат так. Устроит?
Миниатюры
Имитировать на экране работу электронных часов  
2
4 / 4 / 1
Регистрация: 15.05.2009
Сообщений: 57
12.03.2010, 20:35 18
Очень даже!
0
Тимуровец
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
12.03.2010, 21:23 19
dpk-файл
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
package slDigitSymbol;
 
{$R *.res}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO ON}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION ON}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO OFF}
{$SAFEDIVIDE OFF}
{$STACKFRAMES OFF}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$IMPLICITBUILD ON}
 
requires
  rtl,
  vcl,
  designide;
 
contains
  DigitSymbol in 'DigitSymbol.pas';
 
end.
И сама реализация

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
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
 Uses DesignIntf;
 
procedure Register;
begin
 RegisterComponents('Sufferer Components', [TDigitSymbol]);
 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);
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.
2
421 / 130 / 33
Регистрация: 24.02.2009
Сообщений: 1,122
13.03.2010, 10:50 20
а как создать dpk-файл?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.03.2010, 10:50
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru