Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.037 c
1-1128811063
none
2005-10-09 02:37
2005.10.30
ZoneAlarm


1-1128267919
TStas
2005-10-02 19:45
2005.10.30
Как заставить доп. окно на панеле задач появиться?


2-1128805510
The Sound
2005-10-09 01:05
2005.10.30
Ошибка SMTP.


1-1128392925
Старик
2005-10-04 06:28
2005.10.30
Размер буквы


4-1124787957
Сергей333
2005-08-23 13:05
2005.10.30
Уставновлени прав на ключ реестра для пользователя





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский