Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.04.2010, 17:29
Аватар для Belanserg
Belanserg Belanserg вне форума
Прохожий
 
Регистрация: 18.11.2009
Сообщения: 29
Версия Delphi: 7
Репутация: 12
По умолчанию Календарь на Canvas помогите!

Всем доброго. Собственно проблема вот в чем, нашел исходник календаря на год, но не пойму как сделать чтобы выходные дни отображались другим цветом, к примеру красным.
Код:
unit Unit1;

interface

uses
  Windows, SysUtils, Classes, Graphics, Forms;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  months:array[1..12] of byte;
const
  year=2009;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Caption:='Календарь на '+IntToStr(year)+' год';
Form1.Color:=clBlack;
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=25;
var
  month, i, day:integer;
  s:string[2];
begin
  with Form1.Canvas do for month:=1 to 12 do begin
    // Вывод названия месяца:
    Font.Color:=clRed;
    Font.Name:='Times';
    Font.Size:=13;
    Font.Style:=[fsBold];
    TextOut((month - 1) mod 3 * MonthDX, (month - 1) div 3 * MonthDY, LongMonthNames[month]);
    Font.Color:=clLime;
    Font.Name:='Courier';
    Font.Size:=9;
    Font.Style:=[];
    // Вывод названий дней недели:
    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);
      Font.Color:=clWhite;
      Font.Style:=[];
      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;

end.
Admin: Пользуемся тегами!

Помогите кто знает.

Последний раз редактировалось Admin, 09.04.2010 в 17:42.
Ответить с цитированием
  #2  
Старый 09.04.2010, 18:01
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Ну сделай функцию ЭтоВыходной(Дата):Логика
и перед выводом числа дня опрашивай ее, если истина - красный, иначе - черный.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #3  
Старый 10.04.2010, 08:28
Аватар для Belanserg
Belanserg Belanserg вне форума
Прохожий
 
Регистрация: 18.11.2009
Сообщения: 29
Версия Delphi: 7
Репутация: 12
По умолчанию

А можно пример с исходником, если не сложно.
Ответить с цитированием
  #4  
Старый 10.04.2010, 13:58
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Я что то такое делал
http://www.delphisources.ru/forum/sh...ad.php?t=11608
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #5  
Старый 10.04.2010, 17:03
Аватар для Belanserg
Belanserg Belanserg вне форума
Прохожий
 
Регистрация: 18.11.2009
Сообщения: 29
Версия Delphi: 7
Репутация: 12
По умолчанию

Не это не то, но все равно спасибо, мне нужно именно по тому коду который я написал выше.
Ответить с цитированием
  #6  
Старый 12.04.2010, 11:08
Аватар для Belanserg
Belanserg Belanserg вне форума
Прохожий
 
Регистрация: 18.11.2009
Сообщения: 29
Версия Delphi: 7
Репутация: 12
По умолчанию

Все проблема решена, можно тему закрыть.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:47.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025