Девушка флиртует с программистом (сисадмином, электронщиком).
Задает вопрос:
- О чем думает компьютер?
Получает ответ:
- Он думает о том дебиле, который написал для него программу о том что нужно думать.
В связи с наступающим Новым годом я решил посвятить выпуск календарю. Ниже приведенная
программа рисует на форме календарь на 2002 год. Для каждого месяца сначала выводится
его название (используется глобальная переменная LongMonthNames модуля SysUtils),
далее выводятся сокращенные названия дней недели (глобальная переменная ShortDayNames
модуля SysUtils) и, наконец, выводятся сами числа. Количество дней в месяце записано
в массиве months. Чтобы определить, високосный это год или нет, используется
функция IsLeapYear.
Скачать необходимые для компиляции файлы проекта можно на program.dax.ru
const year = 2002; // Год календаряvar months: array [1..12] of byte;
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Caption := 'Календарь на ' + IntToStr(year) + ' год';
Form1.Color := clWhite;
// Длины месяцев:
months[1] := 31;
months[2] := 28 + ord(IsLeapYear(year));
months[3] := 31;
months[4] := 30;
months[5] := 31;
months[6] := 30;
months[7] := 31;
months[8] := 31;
months[9] := 30;
months[10] := 31;
months[11] := 30;
months[12] := 31;
end;
procedure TForm1.FormPaint(Sender: TObject);
const// Настройки размеров календаря:
MonthDX = 150;
MonthDY = 135;
DayDX = 20;
DayDY = 15;
MonthH = 20;
var
month, i: integer;
day: integer;
s: string[2];
beginwith Form1.Canvas dofor month := 1 to 12 dobegin// Вывод названия месяца:
Font.Name := 'Times';
Font.Size := 13;
TextOut((month - 1) mod 3 * MonthDX, (month - 1) div 3 * MonthDY,
LongMonthNames[month]);
Font.Name := 'Courier';
Font.Size := 8;
// Вывод названий дней недели:for day := 1 to 7 do
TextOut((month - 1) mod 3 * MonthDX,
day mod 7 * DayDY + (month - 1) div 3 * MonthDY + MonthH,
ShortDayNames[(day + 1) mod 7 + 1]);
// Определение дня недели первого числа месяца:
day := DayOfWeek(EncodeDate(year, month, 1)) - 2;
if day < 0 then inc(day, 7);
// Вывод чисел:for i := 1 to months[month] dobegin
str(i: 2, s);
TextOut(day div 7 * DayDX + (month - 1) mod 3 * MonthDX + DayDX,
day mod 7 * DayDY + (month - 1) div 3 * MonthDY + MonthH, s);
inc(day);
end;
end;
end;
Статья Программа рисует на форме календарь на 2002 год раздела Синтаксис Дата и Время может быть полезна для разработчиков на Delphi и FreePascal.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.