안녕하세요.
제가 요즘 가계부 프로그램을 짜려고 하는데요
매인화면이 맨위상단에 일~~토일까지 날짜와 함께 각각 자리를 만든다음..
요일중 하나를 선택하면 그다음폼으로 넘어가는 프로그램을 작성하려고 하는데요
요일작성하는 프로그램을 잘 모르겠네요...
아시는분...첨부파일과 함께 제 멜로 보내주시면...감사감사..
procedure calendar_change;
var
nal,i,j,kim,eod,m,n : integer;
k : string[4];
yy,buf,k1 : string;
yo : tdatetime;
Compo : TComponent;
begin
for i := 4 to 45 do
begin
Compo := calenform.FindComponent('Panel'+intTostr(i));
TPanel(Compo).caption := '';
end;
m := strToint(calenform.Edit16.text);
n := strToint(calenform.Edit17.text);
if (m mod 4 = 0) then nal := 29 else nal := 28;
if (m mod 100 = 0) then nal := 28;
if (m mod 400 = 0) then nal := 29;
case n of
1,3,5,7,8,10,12:eod := 31;
4,6,9,11 :eod := 30;
2 :eod := nal;
end;
kim := 0;
for i := j to 45 do
begin
kim := kim + 1;
Compo := calenform.FindComponent('Panel'+intTostr(i));
TPanel(Compo).caption := intTostr(kim);
if kim = eod then
break;
end;
end;
procedure Tcalenform.BitBtn1Click(Sender: TObject);
var
nal,i,eod,m,n : integer;
k : string[4];
yy,buf,k1 : string;
yo : tdatetime;
// nalja,cal_nalja: string[8];
label jump;
begin
m := strToint(Edit16.text);
n := strToint(Edit17.text);
if (m mod 4 = 0) then nal := 29 else nal := 28;
if (m mod 100 = 0) then nal := 28;
if (m mod 400 = 0) then nal := 29;
case n of
1,3,5,7,8,10,12:eod := 31;
4,6,9,11 :eod := 30;
2 :eod := nal;
end;
DM.calentbl.open;
k := Edit16.text; // 1997
k1 := Edit17.text;
yy := k;
if length(k1) = 1 then
buf := '0'+ k1
else if length(k1) = 2 then
buf := k1;
if DM.calentbl.findkey([yy,buf,'01']) then
begin
showmessage(''+k+'년 '+k1+'월은 이미 등록이 되어있습니다.');
goto jump;
end;
for i := 1 to eod do
begin
DM.calentbl.insert;
DM.calentblcr_yy.value := yy;
DM.calentblcr_mm.value := buf;
if i < 10 then DM.calentblcr_dd.value := '0' + intTostr(i)
else DM.calentblcr_dd.value := intTostr(i);
DM.calentblcr_date.value := DM.calentblcr_yy.value + DM.calentblcr_mm.value + DM.calentblcr_dd.value;
DM.calentblcr_ym.value := DM.calentblcr_yy.value + DM.calentblcr_mm.value;
yo := encodedate(strToint(yy),strToint(buf),i); //yo => 97-05-01
달력을 만들고 뿌려줍니다...
워낙 소스가 지저분해서...
욕은하지마세여...제가 초짜일때 만든거라...
그래도 보시면 이해가 되실듯 하네여...
그럼...즐코...
일단 보시고 모르스면 제가 소스화일을 올려드릴께요...
리플달아 놓으세요...
procedure calendar_change;
var
nal,i,j,kim,eod,m,n : integer;
k : string[4];
yy,buf,k1 : string;
yo : tdatetime;
Compo : TComponent;
begin
for i := 4 to 45 do
begin
Compo := calenform.FindComponent('Panel'+intTostr(i));
TPanel(Compo).caption := '';
end;
m := strToint(calenform.Edit16.text);
n := strToint(calenform.Edit17.text);
if (m mod 4 = 0) then nal := 29 else nal := 28;
if (m mod 100 = 0) then nal := 28;
if (m mod 400 = 0) then nal := 29;
case n of
1,3,5,7,8,10,12:eod := 31;
4,6,9,11 :eod := 30;
2 :eod := nal;
end;
yo := encodedate(m,n,1); //yo => 97-05-01
case dayOfweek(yo) of
1 : j := 4;
2 : j := 5;
3 : j := 6;
4 : j := 7;
5 : j := 8;
6 : j := 9;
7 : j := 10;
end;
kim := 0;
for i := j to 45 do
begin
kim := kim + 1;
Compo := calenform.FindComponent('Panel'+intTostr(i));
TPanel(Compo).caption := intTostr(kim);
if kim = eod then
break;
end;
end;
procedure Tcalenform.BitBtn1Click(Sender: TObject);
var
nal,i,eod,m,n : integer;
k : string[4];
yy,buf,k1 : string;
yo : tdatetime;
// nalja,cal_nalja: string[8];
label jump;
begin
m := strToint(Edit16.text);
n := strToint(Edit17.text);
if (m mod 4 = 0) then nal := 29 else nal := 28;
if (m mod 100 = 0) then nal := 28;
if (m mod 400 = 0) then nal := 29;
case n of
1,3,5,7,8,10,12:eod := 31;
4,6,9,11 :eod := 30;
2 :eod := nal;
end;
DM.calentbl.open;
k := Edit16.text; // 1997
k1 := Edit17.text;
yy := k;
if length(k1) = 1 then
buf := '0'+ k1
else if length(k1) = 2 then
buf := k1;
if DM.calentbl.findkey([yy,buf,'01']) then
begin
showmessage(''+k+'년 '+k1+'월은 이미 등록이 되어있습니다.');
goto jump;
end;
for i := 1 to eod do
begin
DM.calentbl.insert;
DM.calentblcr_yy.value := yy;
DM.calentblcr_mm.value := buf;
if i < 10 then DM.calentblcr_dd.value := '0' + intTostr(i)
else DM.calentblcr_dd.value := intTostr(i);
DM.calentblcr_date.value := DM.calentblcr_yy.value + DM.calentblcr_mm.value + DM.calentblcr_dd.value;
DM.calentblcr_ym.value := DM.calentblcr_yy.value + DM.calentblcr_mm.value;
yo := encodedate(strToint(yy),strToint(buf),i); //yo => 97-05-01
case dayOfweek(yo) of
2 : DM.calentblcr_yo.value := '월';
3 : DM.calentblcr_yo.value := '화';
4 : DM.calentblcr_yo.value := '수';
5 : DM.calentblcr_yo.value := '목';
6 : DM.calentblcr_yo.value := '금';
7 : DM.calentblcr_yo.value := '토';
1 : DM.calentblcr_yo.value := '일';
end;
// table2cr_gu.value := '1';
case dayofweek(yo) of
1 : DM.calentblcr_gu.value := '1';
7 : DM.calentblcr_gu.value := '2';
else
DM.calentblcr_gu.value := '1';
end;
end;