이렇게 자세히 답변달아주는것이 님께 도움이 될런지 모르겠네요
벌써부터 이문제를 붙잡고 계셨으니, 노력하지 않은것도 아니고 해서
예제를 만들어 올립니다.
TEdit 3개와 TButton 6개로 년/월/일 선택 을 구현했구요,
TStringGrid를 이용했습니다.
TEdit의 Tag에 값을 넣어두고 버튼을 클릭하면 Edit.Tag값을 증감시켰습니다.
그리고 StringGrid에 표현할때는 Edit.Tag값을 가지고 날짜를 계산해서
Display했습니다.
코드 나갑니다.
아래 코드에서 Button1Click 함수가 핵심입니다.
<!--CodeS-->
uses DateUtils;
procedure TForm1.Btn_YearPreClick(Sender: TObject);
begin
Edt_Year.Tag:=Edt_Year.Tag-1;
Edt_Year.Text:=Format('%4d년',[Edt_Year.Tag]);
Button1Click(nil);
end;
procedure TForm1.Btn_YearNextClick(Sender: TObject);
begin
Edt_Year.Tag:=Edt_Year.Tag+1;
Edt_Year.Text:=Format('%4d년',[Edt_Year.Tag]);
Button1Click(nil);
end;
procedure TForm1.Btn_MonthPreClick(Sender: TObject);
begin
Edt_Month.Tag:=Edt_Month.Tag-1;
if(Edt_Month.Tag<1) then Edt_Month.Tag:=12;
Edt_Month.Text:=Format('%2d월',[Edt_Month.Tag]);
Button1Click(nil);
end;
procedure TForm1.Btn_MonthNextClick(Sender: TObject);
begin
Edt_Month.Tag:=Edt_Month.Tag+1;
if(Edt_Month.Tag>12) then Edt_Month.Tag:=1;
Edt_Month.Text:=Format('%2d월',[Edt_Month.Tag]);
Button1Click(nil);
end;
procedure TForm1.Btn_WeekPreClick(Sender: TObject);
begin
Edt_Week.Tag:=Edt_Week.Tag-1;
if(Edt_Week.Tag<1) then Edt_Week.Tag:=5;
Edt_Week.Text:=Format('%d주',[Edt_Week.Tag]);
Button1Click(nil);
end;
procedure TForm1.Btn_WeekNextClick(Sender: TObject);
begin
Edt_Week.Tag:=Edt_Week.Tag+1;
if(Edt_Week.Tag>5) then Edt_Week.Tag:=1;
Edt_Week.Text:=Format('%d주',[Edt_Week.Tag]);
Button1Click(nil);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
with StringGrid1 do
begin
Cells[0,0]:='요일';
Cells[1,0]:='일';
Cells[2,0]:='월';
Cells[3,0]:='화';
Cells[4,0]:='수';
Cells[5,0]:='목';
Cells[6,0]:='금';
Cells[7,0]:='토';
Cells[0,1]:='날짜';
end;
Button1Click(nil);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
dt: TDateTime;
idx: Integer;
sDD:String;
begin
dt:=StrToDate(IntToStr(Edt_Year.Tag)+'-'+IntToStr(Edt_Month.Tag)+'-01');
dt:=dt+(Edt_Week.Tag-1)*7;
dt:=dt-DayOfTheWeek(dt)-1;
for idx:=1 to 7 do
begin
dt:=IncDay(dt,1);
DateTimeToString(sDD,'dd',dt);
StringGrid1.Cells[idx,1]:=sDD;
end;
end;
<!--CodeE-->
첨부파일을 참조하세요
그럼..
> var
> i : integer;
> startday : TDate;
> str : string;
> begin
> startday := Now - Dayofweek(Now) + 1;
> for i := 0 to 6 do
>
> grdWeek.cells[i+2,1] := formatdatetime('dd', startday + i);
>end;
>
>이런식으로 해보니 TAdvStringGrid에 한주 가 담아지는데요..
>
>헤더 컬럼에는 이번년도 이번월..이번주의....(한달에 5주까지 있겠죠?)
>
>일 월 화 수 목 금 토 로 잡고
>30 1 2 3 4 5 6 이..들어갑니다..
>
>이것을 년도 월 주 단위로 끊어서...
>
>원하는 년도의 월에 주를.....
>
>그리드에 한주 씩 표시 하려고요~
>
>아래 글에 대한 부족한 점이 만회가 되려나요..^^;;;;;;;;
>
>그림 첨부할깨요~
>
>^^*
>
>
>
두분 감사합니다..;;
몇일째 고생했던게;;;;
시원하게 풀렸네요...
여기서 멈추지 않고...
어떻게 되었는지 분석을 해서 제껄로 만들겠습니다..^^;
이해가 좀 부족한것을 보안해서...
저도 답글을 다는 그날까지!!!