Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.30;
Скачать: CL | DM;

Вниз

Выделение дней в календаре   Найти похожие ветки 

 
Jetus ©   (2004-08-26 23:48) [0]

Доброе время суток! Уважаемые господа-мастера, подскажите, как бы это умудриться и выделить субботы и воскрксения в TCalendar другим цветом?


 
NAlexey ©   (2004-08-27 13:22) [1]

Ч.з сообщение MCN_GETDAYSTATE.


 
Jetus ©   (2004-08-28 13:35) [2]

Спасибо, а можно примерчик, а?


 
Sour Smile   (2005-02-07 16:42) [3]

> NAlexey ©   (27.08.04 13:22) [1]
> Ч.з сообщение MCN_GETDAYSTATE.

MCN_GETDAYSTATE это для компонента TMonthCalendar, а не для TCalendar (наследник TCustomGrid о котором писал Jetus), да и выделяет он не цветом, а жирным шрифтом. И несмотря на то, что это сообщение компонент TMonthCalendar уже обрабатывает в событии OnGetMonthInfo, для этой цели наверно таки прийдётся писать своего наследника, так как на вход этого события подаётся только номер месяца, а вот год Борланды почемуто решили не сообщать (без года понятное дело невозможно вычислить день недели).

А по поводу компоненты TCalendar - к сожалению тоже необходимо создать потомка и переписать метод DrawCell, но здесь безусловно больше свободы действий. Например так:
uses
 ..., Graphics;
type
 TNewCalendar = class(TCalendar)
 protected
   procedure DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); override;
 end;
...
procedure TNewCalendar.DrawCell(ACol, ARow: Integer; ARect: TRect;
 AState: TGridDrawState);
var
 TheText: String;
 AYear, AMonth, ADay: Word;
 DrawDay: Integer;
begin
 TheText := CellText[ACol, ARow];
 if TheText="" then
 begin
   Canvas.Brush.Color := clGray;
   Canvas.Font.Color := Font.Color;
 end else
 if TryStrToInt(TheText, DrawDay) then
 begin
   DecodeDate(CalendarDate, AYear, AMonth, ADay);
   if (Trunc(EncodeDate(AYear, AMonth, DrawDay))mod 7) < 2 then
   begin
     Canvas.Brush.Color := clRed;
     Canvas.Font.Color := clWhite;
   end else
   begin
     Canvas.Brush.Color := Color;
     Canvas.Font.Color := Font.Color;
   end;
 end;
 inherited;
end;



Страницы: 1 вся ветка

Текущий архив: 2005.10.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.026 c
14-1128999519
Laymer
2005-10-11 06:58
2005.10.30
ErWin и FireBerd


3-1127207552
Starcom
2005-09-20 13:12
2005.10.30
Как мне подсчитать разницу в формате (Год, лет) с текущей датой?


3-1126995942
quadronik
2005-09-18 02:25
2005.10.30
Delphi+Access--> Дельфи не видит новые поля базы


3-1127142793
BaxTMaH
2005-09-19 19:13
2005.10.30
Странная ошибка


4-1124894011
Суслик
2005-08-24 18:33
2005.10.30
Теоретический вопрос по перемещению окон.