Здравствуйте! Нужно создать программу «Календарь», показывающую любой день любого месяца любого года. У меня есть готовая программа, признаюсь что не я ее делал, т.к. совсем недавно начал делфи изучать, а задают уже такие задания где сразу не сообразишь а сроки короткие.. но я был бы рад если бы мне кто нибудь помог доработать ее совсем чуть. Дело в том что при запуске программы она показывает текущий день выделяя квадратик, все бы ничего, но это на всех месяцах.. вот скрин: http://xmages.net/show.php/1906218_123-jpg.html
Мне нужно чтобы этого выделения не было на всех месяцах, хотя б на текущем, или вообще ни на каком. Программку прикрепил..
volvo
12.10.2010 5:21
Значит, смотри:
unit Unit1;
interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Spin, Grids, Calendar;
type// Первое - определяем промежуточный класс с именем TCalendar (унаследованный
// от того типа, который описан в Дельфийском модуле Calendar, чтоб не регистрировать
// свой компонент), в котором будет нужный нам функционал. Конкретнее - подправим
// процедуру отрисовки ячейки.
// Этот класс должен обязательно быть описан ПЕРЕД классом формы, потому что
// в TForm1 уже используется тип TCalendar.Нсли я свой класс опишу ниже по тексту,
// то будет использовано то, что и так есть в модуле Calendar, и никаких изменений не будет.
TCalendar = class(Calendar.TCalendar)
private{ Private declarations }protected{ Protected declarations }public{ Public declarations }procedure DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); override;
constructor Create(AOwner: TComponent); override;
published{ Published declarations }end;
TForm1 = class(TForm)
Label13: TLabel;
SpinEdit1: TSpinEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Cal1: TCalendar;
Cal2: TCalendar;
Cal3: TCalendar;
Cal4: TCalendar;
Cal5: TCalendar;
Cal6: TCalendar;
Cal7: TCalendar;
Cal8: TCalendar;
Cal9: TCalendar;
Cal10: TCalendar;
Cal11: TCalendar;
Cal12: TCalendar;
procedure OnChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
private{ Private declarations }public{ Public declarations }end;
var
Form1: TForm1;
implementation{$R *.dfm}// Собственно, реализация добавленных методов
constructor TCalendar.Create(AOwner: TComponent);
begin
DefaultDrawing := false;
inherited create(AOwner);
end;
procedure TCalendar.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState);
var
OldCanvas: TCanvas;
begininherited DrawCell(ACol, ARow, ARect, AState);
if (gdSelected in AState) thenbegin
OldCanvas := TCanvas.create;
try
OldCanvas.brush.color := canvas.brush.color;
OldCanvas.font.color := canvas.font.color;
canvas.brush.color := clWhite;
canvas.font.color := clBlack;
inherited DrawCell(ACol, ARow, ARect, AState);
canvas.font.color := OldCanvas.font.color;
canvas.brush.color := canvas.brush.color;
finally
OldCanvas.free;
end;
end;
end;
// А это - то, что было у тебя, но чуть-чуть подправленное. Вместо Copy/Paste
// используются возможности Дельфи по нахождению компонентов на форме.
procedure TForm1.OnChange(Sender: TObject);
var
i: integer;
myCalend: TCalendar;
beginfor i := 1to12dobeginwith Form1.FindComponent('Cal' + IntToStr(i)) as TCalendar dobegin
Year := SpinEdit1.Value; Month := i;
end;
end;
// Cal1.Year:=SpinEdit1.Value; Cal1.Month:=1;
// Cal2.Year:=SpinEdit1.Value; Cal2.Month:=2;
// Cal3.Year:=SpinEdit1.Value; Cal3.Month:=3;
// Cal4.Year:=SpinEdit1.Value; Cal4.Month:=4;
// Cal5.Year:=SpinEdit1.Value; Cal5.Month:=5;
// Cal6.Year:=SpinEdit1.Value; Cal6.Month:=6;
// Cal7.Year:=SpinEdit1.Value; Cal7.Month:=7;
// Cal8.Year:=SpinEdit1.Value; Cal8.Month:=8;
// Cal9.Year:=SpinEdit1.Value; Cal9.Month:=9;
// Cal10.Year:=SpinEdit1.Value; Cal10.Month:=10;
// Cal11.Year:=SpinEdit1.Value; Cal1.Month:=11;
end;
procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
Cal1.UseCurrentDate:=True;
SpinEdit1.Value:=Cal1.Year;
Cal1.UseCurrentDate:=False;
for i := 1to12dowith Form1.FindComponent('Cal' + IntToStr(i)) as TCalendar dobegin
Year := SpinEdit1.Value; Month := i;
end;
// Cal1.Year:=SpinEdit1.Value; Cal1.Month:=1;
// Cal2.Year:=SpinEdit1.Value; Cal2.Month:=2;
// Cal3.Year:=SpinEdit1.Value; Cal3.Month:=3;
// Cal4.Year:=SpinEdit1.Value; Cal4.Month:=4;
// Cal5.Year:=SpinEdit1.Value; Cal5.Month:=5;
// Cal6.Year:=SpinEdit1.Value; Cal6.Month:=6;
// Cal7.Year:=SpinEdit1.Value; Cal7.Month:=7;
// Cal8.Year:=SpinEdit1.Value; Cal8.Month:=8;
// Cal9.Year:=SpinEdit1.Value; Cal9.Month:=9;
// Cal10.Year:=SpinEdit1.Value; Cal10.Month:=10;
// Cal11.Year:=SpinEdit1.Value; Cal11.Month:=11;
// Cal12.Year:=SpinEdit1.Value; Cal12.Month:=12;
end;
end.
Вообще-то (по хорошему) надо бы вынести эти циклы в отдельный метод, но для начала пойдет и так.
Второй модуль, MyCalendar, вообще можешь убрать - я его не использовал.
Lis
19.10.2010 3:00
Спасибо большое! то что надо =)
-Дмитрий-
29.03.2017 18:21
Цитата(Lis @ 19.10.2010 3:00)
Спасибо большое! то что надо =)
программа не будет работать, 29,30,31 числа каждого месяцабудет видавать invalid argument to date encode кто знает как єто исправить
is there a legitimate canadian p
29.08.2021 14:24
Cheap Doxycycline Online Uk
buy zithromax online without a p
5.12.2021 12:16
Priligy Tablets
hydroxychloroquine price walgree
6.12.2021 20:01
viagra original pas cher en la seyne-sur-mer
generic finasteride internationa
20.12.2021 4:51
Chlamydia Keflex
nishaknapp
16.01.2023 6:19
Why not settling on games that is fun and at the same time your earning. Well it'll make suspense because the game is well but dude just try it and it gave me hope while pandemic is real rn. 3 Popular Online Casino Games You Can Play Today
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.