![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TCalendar
Khabibulin © (2006-10-26 13:46:00)Народ, подскажите пожалуйста, как изменить в стандартном компоненте TCalendar цвет выбранной ячейки?
За ранее спасибки!))))
Ketmar (2006-11-06 06:19:00) [1]>[19] RASkov 6-Nov-2006, 06:05
>кто второй?
какая разница, если пилу я всё равно пропил...
RASkov (2006-11-06 06:05:00) [2]> [18] Ketmar © (06.11.06 06:04)
Да видел, я не понял
> пилят двое
кто второй?
Ketmar (2006-11-06 06:04:00) [3]>[16] RASkov 6-Nov-2006, 06:03
>> двуручной пиле
есть такая. зубья большие, пилят двое. видел, наверняка.
Ketmar (2006-11-06 06:03:00) [4]>[15] RASkov 6-Nov-2006, 06:02
>Надеюсь, что Ketmar никогда не вспомнит, где у него пила и
>дубина:))
он уже вспомнил. пропил нафиг. теперь рыдает и рвёт бороду...
RASkov (2006-11-06 06:03:00) [5]> двуручной пиле
?
RASkov (2006-11-06 06:02:00) [6]> [14] Ketmar © (06.11.06 06:00)
Надеюсь, что Ketmar никогда не вспомнит, где у него пила и дубина:))
Ketmar (2006-11-06 06:00:00) [7]>[12] RASkov 6-Nov-2006, 05:53
>не достаточно плюсов в пользу CDM:)
Кэтмар вспоминает, куда спрятал свою большую дубину
>[13] RASkov 6-Nov-2006, 05:55
>но консоль.....
>Ketmar, надеюсь поймешь меня правильно.
Кэтмар прекратил думать о дубине и задумался о двуручной пиле
RASkov (2006-11-06 05:55:00) [8][12] имел ввиду только у себя эти плюсы и минусы CDM:)
CDM, "штучка", вообщем-то не плохая, но консоль.....
Ketmar, надеюсь поймешь меня правильно.
RASkov (2006-11-06 05:53:00) [9]> [9] Ketmar © (06.11.06 05:24)
не достаточно плюсов в пользу CDM:)
Ketmar (2006-11-06 05:37:00) [10]Semagic тоже смешной. как-то предложил переименовать Кондолизу Райс в, извините, Гондолизу. я, конечно, с ним согласен, но мог бы и как-то помягче...
unknown (2006-11-06 05:33:00) [11]
> Ketmar © (06.11.06 05:24) [9]
>
> а вот пользуй CDM, там spellchecker есть %-)
Хех, в FireFox2 тоже есть. Правда смешной бывает - такие словечки предлагает,
что закачаешся :)))
p.s.
Не матерные, не надейтесь :)
Ketmar (2006-11-06 05:24:00) [12]а вот пользуй CDM, там spellchecker есть %-)
RASkov (2006-11-06 05:16:00) [13]Т.е.
Ошибок в русском тексте наделал сравни то что выделенно и эти слова в [6]
> смещение первого дня месяца, по умному не предумалкак вытащить
> его из TCalendar. Проще заногопереписать этот календарь,
:))
RASkov (2006-11-06 05:12:00) [14]> [6] unknown © (06.11.06 04:55)
> > RASkov (06.11.06 04:47) [5]
> >
> > Блин, ошибок глупых наделал:) .. придумал.. заново...:)
>
>
> Вообще, не стоило [4] выкладывать. Пока сделаешь - столько
> нервов и времени потратишь - лучше чем полезным заняться
> :)
Да и чего, интересно, хитрого я придумал?:) измучился думать:)
Ошибок в русском тексте наделал сравни то что выделенно и эти слова в [5]:))
> проще
> свой сделать.
Во во и я про тоже.
unknown (2006-11-06 04:55:00) [15]
> RASkov (06.11.06 04:47) [5]
>
> Блин, ошибок глупых наделал:) ..придумал.. заново...:)
Вообще, не стоило [4] выкладывать. Пока сделаешь - столько
нервов и времени потратишь - лучше чем полезным заняться :)
Да и не стоит шкурка выделки. Чем в стандартном менять - проще
свой сделать.
RASkov (2006-11-06 04:47:00) [16]Блин, ошибок глупых наделал:) ..придумал.. заново...:)
RASkov (2006-11-06 04:41:00) [17]unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, Mask, ToolEdit, Grids, Calendar;
type
TMyCal = class(TCalendar)
procedure DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); override;
public
constructor Create(AOwner: TComponent); override;
end;
TCalendar = class(TMyCal);
TForm1 = class(TForm)
Calendar1: TCalendar;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TMyCal }
constructor TMyCal.Create(AOwner: TComponent);
begin
inherited;
Options := [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine,
goRangeSelect, goDrawFocusSelected, {goRowSizing, goColSizing, goRowMoving,
goColMoving, goEditing,} goTabs, {goRowSelect,}
goAlwaysShowEditor, goThumbTracking];
end;
procedure TMyCal.DrawCell(ACol, ARow: Integer; ARect: TRect; AState: TGridDrawState);
function GetDay: Integer;
begin
Result := -2+ ACol + (ARow - 1) * 7; //Вот здесь "косяк"
if (Result < 1) or (Result > DaysThisMonth) then Result :=0;
end;
const SelDays = [1..3, 7, 15, 27];
var n: Integer;
begin
n :=GetDay;
if n in SelDay then Canvas.Brush.Color:=clBlue else
if (gdSelected in AState) and ( n > 0 ) then Canvas.Brush.Color:=clRed;
inherited;
end;
end.
Есть один косяк (выделен жирным), смещение первого дня месяца, по умному не предумал как вытащить его из TCalendar. Проще заного переписать этот календарь, там кода-то 5 с половиной строчек. Если не сообразишь дай знать, что нибудь придумаем. Ну и константу SelDays нужно вытащить из DrawCell.
Хотя из [3] может и не то совсем:)
Германн (2006-11-06 02:13:00) [18]
>
> Khabibulin (26.10.06 13:46)
>
> Народ, подскажите пожалуйста, как изменить в стандартном
> компоненте TCalendar цвет выбранной ячейки?
> Khabibulin (05.11.06 22:51) [2]
>
> ну это что касается выделения ячейки как я понял... а вот
> если я хочу просто сделать ячейку какой то даты другого
> цвета, а выделение оставить прежним?
Как прикажешь понимать тебя, Саид?
P.S. Выделено мной.
Khabibulin (2006-11-05 22:51:00) [19]ну это что касается выделения ячейки как я понял... а вот если я хочу просто сделать ячейку какой то даты другого цвета, а выделение оставить прежним?
silversmith (2006-10-26 14:57:00) [20]Создайте потомка от TCalendar. В нем перегрузите процедуру DrawCell
и в ней напишите следующий код:
var
cl:TColor;
begin
cl:=Canvas.Brush.Color;
if (gdSelected in AState) and (not (gdFixed in AState))
then Canvas.Brush.Color := clRed;//новый цвет
inherited DrawCell(ACol, ARow, ARect, AState);
Canvas.Brush.Color:=cl;
end;