Здравствуйте!
Нужно создать программу «Календарь», показывающую любой день любого месяца любого года.
У меня есть готовая программа, признаюсь что не я ее делал, т.к. совсем недавно начал делфи изучать, а задают уже такие задания где сразу не сообразишь а сроки короткие.. но я был бы рад если бы мне кто нибудь помог доработать ее совсем чуть.
Дело в том что при запуске программы она показывает текущий день выделяя квадратик, все бы ничего, но это на всех месяцах..
вот скрин:
http://xmages.net/show.php/1906218_123-jpg.html
Мне нужно чтобы этого выделения не было на всех месяцах, хотя б на текущем, или вообще ни на каком.
Программку прикрепил..
Прикрепленные файлы
_________.rar ( 206.51 килобайт )
Кол-во скачиваний: 516
Значит, смотри:
unit Unit1;Вообще-то (по хорошему) надо бы вынести эти циклы в отдельный метод, но для начала пойдет и так.
interface
uses
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;
begin
inherited DrawCell(ACol, ARow, ARect, AState);
if (gdSelected in AState) then begin
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;
begin
for i := 1 to 12 do
begin
with Form1.FindComponent('Cal' + IntToStr(i)) as TCalendar do
begin
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 := 1 to 12 do
with Form1.FindComponent('Cal' + IntToStr(i)) as TCalendar do
begin
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.
Спасибо большое! то что надо =)
Cheap Doxycycline Online Uk
Priligy Tablets
viagra original pas cher en la seyne-sur-mer
Chlamydia Keflex
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. https://ezwebblog.com/3-popular-online-casino-games-you-can-play-today/