Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  158

•  TDictionary Custom Sort  3 335

•  Fast Watermark Sources  3 086

•  3D Designer  4 845

•  Sik Screen Capture  3 339

•  Patch Maker  3 551

•  Айболит (remote control)  3 656

•  ListBox Drag & Drop  3 013

•  Доска для игры Реверси  81 686

•  Графические эффекты  3 943

•  Рисование по маске  3 247

•  Перетаскивание изображений  2 627

•  Canvas Drawing  2 750

•  Рисование Луны  2 578

•  Поворот изображения  2 187

•  Рисование стержней  2 168

•  Paint on Shape  1 568

•  Генератор кроссвордов  2 235

•  Головоломка Paletto  1 767

•  Теорема Монжа об окружностях  2 229

•  Пазл Numbrix  1 685

•  Заборы и коммивояжеры  2 057

•  Игра HIP  1 282

•  Игра Go (Го)  1 230

•  Симулятор лифта  1 474

•  Программа укладки плитки  1 216

•  Генератор лабиринта  1 548

•  Проверка числового ввода  1 364

•  HEX View  1 497

•  Физический маятник  1 358

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Программа рисует на форме календарь на 2002 год



Автор: Даниил Карапетян

Девушка флиртует с программистом (сисадмином, электронщиком).
Задает вопрос:
- О чем думает компьютер?
Получает ответ:
- Он думает о том дебиле, который написал для него программу о том что нужно думать.

В связи с наступающим Новым годом я решил посвятить выпуск календарю. Ниже приведенная программа рисует на форме календарь на 2002 год. Для каждого месяца сначала выводится его название (используется глобальная переменная LongMonthNames модуля SysUtils), далее выводятся сокращенные названия дней недели (глобальная переменная ShortDayNames модуля SysUtils) и, наконец, выводятся сами числа. Количество дней в месяце записано в массиве months. Чтобы определить, високосный это год или нет, используется функция IsLeapYear.


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];
begin
  with Form1.Canvas do for month := 1 to 12 do begin
    // Вывод названия месяца:
    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] do begin
      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;





Похожие по теме исходники

Программа укладки плитки

Календарь генератор

iCalendar (календарь)

Tetris 2002 (тетрис)

 

Weather Info (погода)

Weather Info 2 (информация о погоде)

Курс валют / погода




Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте