Створюємо японський календар в Delphi 7.0
Згідно з календарем, прийнятому в Японії і в інших країнах Сходу, в межах 12-річного циклу щороку проходить під знаком якої-небудь тварини. Людина, народжена в певному році, одержує ряд уроджених властивостей, залежно від яких і складається доля. Популярність цього календаря на Сході дуже велика. Знаючи рік народження, Ви без праці відшукаєте в поданій таблиці потрібний Вам знак і прочитаєте у відповідному розділі як про себе, так і про Ваших знайомих.
Для початку слід створити порожній проект в Delphi 7.0 і зберегти його в певній папці на жорсткому диску комп'ютера. (Проект я зберіг під назвою A_Calendar.dpr Calendar.dfm Calendar.pas) Потім ми створюємо макет сторінки, оскільки після цього ми будемо використовувати імена наших об'єктів в обчисленнях нашого алгоритму, то безсумнівно олчень важливо на початковому етапі створити правильні імена об'єктів і строго дотримуватися їх в подальшій розробці проекту.- Форма - Form1.
- Меню програми - MainMenu1 (меню містить команди Файл-вихід; Шрифт - звичайний, великий; Про програму) - просте меню відображає лише найнеобхідніші загальні комманди.
- Мітка - Label1.
- Текстове поле - Edit1.
- Мітка - Label2.
- Кнопку - Button1.
- Panel1.
- Поле мемо - Memo1.
Розробка обчислення алгоритму японського календаря.
Згідно з японським календарем один повний цикл становить 60 років, у свою чергу він розбитий на 5 кольорових підциклів:- жовтий
- білий
- чорний
- зелений
- червоний
Обробляємо і обчислюємо рік з назвою тварини шляхом отримання залишку від ділення року на 12 (рік mod 12):
a: = a mod 12;
case a of
4: begin
button1.Caption: = '>>>>';
Memo1.Lines.LoadFromFile ( 'C: \ Program Files \ calendar \ rat');
end;
5: begin
button1.Caption: = '>>>>';
Memo1.Lines.LoadFromFile ( 'C: \ Program Files \ calendar \ bull');
end;
6: begin
button1.Caption: = '>>>>';
Memo1.Lines.LoadFromFile ( 'C: \ Program Files \ calendar \ tiger');
end;
7: begin
button1.Caption: = '>>>>';
Memo1.Lines.LoadFromFile ( 'C: \ Program Files \ calendar \ Hare');
end;
8: begin
button1.Caption: = '>>>>';
Memo1.Lines.LoadFromFile ( 'C: \ Program Files \ calendar \ dragon');
end;
9: begin
button1.Caption: = '>>>>';
Memo1.Lines.LoadFromFile ( 'C: \ Program Files \ calendar \ Snake');
end;
10: begin
button1.Caption: = '>>>>';
Memo1.Lines.LoadFromFile ( 'C: \ Program Files \ calendar \ Horse');
end;
11: begin
button1.Caption: = '>>>>';
Memo1.Lines.LoadFromFile ( 'C: \ Program Files \ calendar \ sheep');
end;
0: begin
button1.Caption: = '>>>>';
Memo1.Lines.LoadFromFile ( 'C: \ Program Files \ calendar \ monkey');
end;
1: begin
button1.Caption: = '>>>>';
Memo1.Lines.LoadFromFile ( 'C: \ Program Files \ calendar \ cock');
end;
2: begin
button1.Caption: = '>>>';
Memo1.Lines.LoadFromFile ( 'C: \ Program Files \ calendar \ dog');
end;
3: begin
button1.Caption: = '>>>';
Memo1.Lines.LoadFromFile ( 'C: \ Program Files \ calendar \ pig');
end;
end;
Спочатку нам потрібно дізнатися: скільки ж цілих циклів пройшло, для цього використовуємо формулу: рік mod 60. Так ми отримуємо останній неповний цикл, з яким і будемо проводити розрахунки.
*** обробка обчислення кольорового циклу ***>
c: = b mod 60;
case c of 4: Panel1.Color: = clLime;
5: Panel1.Color: = clLime;
6: Panel1.Color: = clLime;
7: Panel1.Color: = clLime;
8: Panel1.Color: = clLime;
9: Panel1.Color: = clLime;
10: Panel1.Color: = clLime;
11: Panel1.Color: = clLime;
12: Panel1.Color: = clLime;
13: Panel1.Color: = clLime;
14: Panel1.Color: = clLime;
15: Panel1.Color: = clLime;
16: Panel1.Color: = clRed;
17: Panel1.Color: = clRed;
18: Panel1.Color: = clRed;
19: Panel1.Color: = clRed;
20: Panel1.Color: = clRed;
21: Panel1.Color: = clRed;
22: Panel1.Color: = clRed;
23: Panel1.Color: = clRed;
24: Panel1.Color: = clRed;
25: Panel1.Color: = clRed;
26: Panel1.Color: = clRed;
27: Panel1.Color: = clRed;
28: Panel1.Color: = clYellow;
29: Panel1.Color: = clYellow;
30: Panel1.Color: = clYellow;
31: Panel1.Color: = clYellow;
32: Panel1.Color: = clYellow;
33: Panel1.Color: = clYellow;
34: Panel1.Color: = clYellow;
35: Panel1.Color: = clYellow;
36: Panel1.Color: = clYellow;
37: Panel1.Color: = clYellow;
38: Panel1.Color: = clYellow;
39: Panel1.Color: = clYellow;
40: Panel1.Color: = clWhite;
41: Panel1.Color: = clWhite;
42: Panel1.Color: = clWhite;
43: Panel1.Color: = clWhite;
44: Panel1.Color: = clWhite;
45: Panel1.Color: = clWhite;
46: Panel1.Color: = clWhite;
47: Panel1.Color: = clWhite;
48: Panel1.Color: = clWhite;
49: Panel1.Color: = clWhite;
50: Panel1.Color: = clWhite;
51: Panel1.Color: = clWhite;
52: Panel1.Color: = clBlack;
53: Panel1.Color: = clBlack;
54: Panel1.Color: = clBlack;
55: Panel1.Color: = clBlack;
56: Panel1.Color: = clBlack;
57: Panel1.Color: = clBlack;
58: Panel1.Color: = clBlack;
59: Panel1.Color: = clBlack;
0: Panel1.Color: = clBlack;
1: Panel1.Color: = clBlack;
2: Panel1.Color: = clBlack;
3: Panel1.Color: = clBlack;
особливості:
Зверніть увагу на особливості обчислення року і кольорового циклу: вони докладно розписані ((рік від 0 до 59; колір від 0 до 59)
Звичайно, рішення побудоване таким чином дуже громіздко і з точки зору ефективності спірно, але у нього є одна перевага - використовуючи вищевказаний лістинг розрахунку, ви ніколи не сплутаєш і не зіб'є з японського летоисчесления, звичайно, ці процеду ри можна було б записати трохи інакше, економлячи простір і час, але, як правило, докладний олпісаніе команд дає більшу ймовірність уникнення помилок. Чому ж ми починаємо з 4, а закінчуємо 59,0,1,2,3, та тому що це безпосередньо пов'язано з особливостями японського календаря, що легко перевірити, використовуючи відправну точку - 1984 рік. Весь лістинг обчислень ми визначаємо в процедурі, а виполненніє оной призначаємо на шей кнопці. Природно наші елементи управління програмою не матимуть властивість "Caption" рівне "Name", ми їх переназовем за допомогою процедури procedure TForm1.FormCreate (Sender: TObject)
procedure TForm1.FormCreate (Sender: TObject);
begin
memo1.Font.Size: = 10;
memo1.Text: = '';
Label1.Caption: = 'Введіть Рік:';
Label1.Color: = clRed;
Label1.Font.Size: = 10;
Label1.Font.Color: = clWhite;
Label2.Caption: = 'Рік';
Label2.Color: = clRed;
Label2.Font.Size: = 10;
Label2.Font.Color: = clWhite;
edit1.Text: = '';
Button1.Caption: = '******************';
Form1.Caption: = 'Японський календарний гороскоп:';
end;
Процедура обчислень укладена в першу частину блоку try. except; у другій частині описується повідомлення в випадки виключень, наприклад: неправильне введення року. Це дає нам можливість уникнути мимовільного закриття програми.
При визначенні року тварини відповідно до японським календарем ми ще бачимо один рядок - читання з файлу з певним шляхом в поле Memo1: Memo1.Lines.LoadFromFile ( 'C: \ Program Files \ calendar \ cock'); - це короткі характеритик дюдей, які народилися в той чи інший рік. При створенні програми, на жаль, я ніде не знайшов характеристики колірних циклів, очевидно, їм не надається велика увага.
Після цього в каталозі calendar ми створюємо 12 текстових фалів з характеристиками для кожного року і прибираємо розширення разом з точки, залишаючи тільки назва фала, таким чином, за замовчуванням, ці файли не будуть відкриватися будь-якою іншою програмою без вибору її типу користувачем. Звичайно, можна було б написати і інсталяцію для неї, але я думаю, що, виходячи з невеликого розміру програми, яка носить тестовий характер, цього робити не варто.