Scusa per il ritardo della risposta ma ho avuto da lavorare molto.
Il codice non è ottimizzato al massimo. L'ho buttato giù in pochissimo tempo che avavo fretta comunque dovrebbe corrispondere a questo.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, Grids, ComCtrls, DateUtil;
type
TForm1 = class(TForm)
gCalendario: TStringGrid;
BitBtn1: TBitBtn;
MonthCalendar1: TMonthCalendar;
procedure BitBtn1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
VMesi : array [1..12] of Integer;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.BitBtn1Click(Sender: TObject);
var
col, riga, i : Integer;
Data : TDate;
giorno : Integer;
begin
//-- inizializzazione della riga
riga := 1;
for i := 1 to VMesi[5] do
begin
//-- EncodeDate(Anno, mese, giorno)
Data := EncodeDate(2003,5,i);
//-- restituisce un numero da 1 a 7 dove 1 è domenica e 7 è sabato
giorno := DayOfWeek(Data);
//-- giorno 1 = domenica
if giorno = 1 then
col := 6
else
col := giorno - 2;
if (col = 0) AND (i <> 1) then
Inc(riga);
gCalendario.Cells[col, riga] := IntToStr(i);
end;
end;
procedure TForm1.FormShow(Sender: TObject);
var
i : Integer;
begin
//-- la griglia è settata FixedCol=0 FixedRow=1 RowCount=6
//-- riempio il vettore dei mesi con i giorni relativi
for i := Low(VMesi) to High(VMesi) do
begin
VMesi[i] := DaysPerMonth(2003, i);
end;
//-- scrivo i giorni sull'intestazione della griglia
gCalendario.Cells[0, 0] := 'LUN';
gCalendario.Cells[1, 0] := 'MAR';
gCalendario.Cells[2, 0] := 'MER';
gCalendario.Cells[3, 0] := 'GIO';
gCalendario.Cells[4, 0] := 'VEN';
gCalendario.Cells[5, 0] := 'SAB';
gCalendario.Cells[6, 0] := 'DOM';
end;
end.
Se hai altri dubbi mandami la tua email che ti mando i sorgenti o un altro esempio se ti servo funzioni più avanzate
USATE DELPHI E ANDRETE LONTANO.