Q&A

  • [re] [질문]아래 질문 다시 할깨요
이렇게 자세히 답변달아주는것이 님께 도움이 될런지 모르겠네요

벌써부터 이문제를 붙잡고 계셨으니, 노력하지 않은것도 아니고 해서
예제를 만들어 올립니다.

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 이..들어갑니다..
>
>이것을 년도 월 주 단위로 끊어서...
>
>원하는 년도의 월에 주를.....
>
>그리드에 한주 씩 표시 하려고요~
>
>아래 글에 대한 부족한 점이 만회가 되려나요..^^;;;;;;;;
>
>그림 첨부할깨요~
>
>^^*
>
>
>
1  COMMENTS
  • Profile
    꼬꼬마 2008.12.03 00:53
    장성호님..최용일님..
    두분 감사합니다..;;
    몇일째 고생했던게;;;;
    시원하게 풀렸네요...
    여기서 멈추지 않고...
    어떻게 되었는지 분석을 해서 제껄로 만들겠습니다..^^;
    이해가 좀 부족한것을 보안해서...
    저도 답글을 다는 그날까지!!!
    • 김길현
    • 2008.12.05 01:45
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.05 01:05
      추측하자면... UDP1.GetMessage(str);에서 타임아웃되어서 종료되고 이 때문에 str에는 아무 값도 설정...
    • absurdite
      2008.12.05 02:22
      앗! 딱 맞습니다ㅡㅜ UDP1.GetMessage(str); if (not (str = '')) then Memo1.Lines.Add(str); ...
    • cell
    • 2008.12.04 23:22
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.05 00:55
      보내는 부분에서 잘못된 곳이 있네요... 동적 배열 (array of ...)은 포인터형입니다. 실제 데이터는 다...
    • cell
      2008.12.05 01:24
      맞네요... 동적배열이 포인터형인데... 먼짓을 한건지...^^ 감사합니다.
    • 별이^^
    • 2008.12.04 18:51
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이건희
    • 2008.12.03 20:59
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 장성호
      2008.12.03 22:08
      Timer를 이용해보세요 1. OnMouseDown이벤트에서 1.1 레이블의 숫자를 증가시키세요 ...
    • 까마귀
      2008.12.03 23:26
      흠... 아마 메인폼 실행후에 로그인 창이 뜨도록 만들어져 있는 것 같네요. 그리고, 메인폼 실행시 쿼...
    • 이정욱
      2008.12.03 12:57
      클래스를 사용하면 좋겠지만, 만약 네트웍이나 시리얼을 통해 자료를 주고 받는 다면 packed record를 사...
    • 이은주
      2008.12.03 15:45
      아 그럼 동일한 환경이라면 클래스를 쓰는 것이 유리하고 정보를 전송하는 경우는 packed record 가 유리...
    • 김명민
    • 2008.12.03 06:10
    • 0 COMMENTS
    • /
    • 0 LIKES
    • cell
    • 2008.12.03 04:38
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.03 07:21
      쩝~ 왜 꼭 4바이트 형태로 만들어야 된다고 생각하시는지요? Byte든 Char 이든, 16진수이든 10진수이든...
    • cell
      2008.12.04 22:31
      최용일님 말씀처럼 너무 4바이트에 연연했나보네요 ^^ 잘해겼됐습니다.
    • Jackie
    • 2008.12.03 03:09
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.03 03:25
      왜 겹치려고 하는지는 모르겠지만.... TLabel은 절대 TPageControl위로 올라갈 수가 없습니다. TLabel...
    • Jackie
      2008.12.03 03:43
      님의 덕분에 해결을 하였습니다. 정말 감사합니다. 두 콤포넌트가 겹치는것은 대면부구성상 탭오른...
    • 장성호
      2008.12.03 04:02
      TLabel 과 TSpeedButton은 Graphic-Control(윈도우핸들이 없는놈)입니다. 그리고 TPageControl 과 TSt...
    • 꼬꼬마
    • 2008.12.02 21:50
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.02 22:39
      아래와 같이해서 함수를 하나 만들어 쓰세요. 1. 년도와 월 가지고 그달의 1일을 구하세요. (EncodeDate...
    • 꼬꼬마
      2008.12.02 23:44
      휴...;;; 무슨 말인지는 알겠는데요;; 아직 델 초보라서;;; 이것저것 계속 해보고 있는데;;;;; ...
    • 장성호
    • 2008.12.02 23:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 꼬꼬마
      2008.12.03 00:53
      장성호님..최용일님.. 두분 감사합니다..;; 몇일째 고생했던게;;;; 시원하게 풀렸네요... 여기서 멈...
    • cell
    • 2008.12.02 06:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.02 18:58
      동적 배열을 사용해보세요. A+B+C+D만큼의 크기를 동적배열로 잡고 거기에 데이터를 넣어서 전송하시면 ...
    • 꼬꼬마
    • 2008.12.01 22:10
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.02 02:14
      뭐가 잘 안된다는 것인지.... 그냥 for문으로 원하시는 주를 삽입하시면 될것 같은데요...
    • 꼬꼬마
      2008.12.02 04:01
      어떤 식으로... for문을 돌려야 하는건가요? 이거..그냥 계속 제자리 걸음을 하는거 같네여;; ㅠㅜ
    • 장성호
      2008.12.02 05:03
      벌써 여러번 같은 질문 올리셨죠? 이곳 말고 델마당에도... http://www.delphi.co.kr/zboard/view....
    • 조일현
    • 2008.12.01 21:16
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.02 02:16
      뭘 그렇게 숨기시려고 하시는지... 'zzzzzz'이란 에러메세지에 해답이 있습니다. 잘 분석해보세요.
    • 아르스
      2008.12.02 19:09
      ^^
    • 조일현
      2008.12.07 20:36
      감사합니다~~
    • 백록화
      2008.12.01 19:52
      흠... DataSet - DataSource - DbGrid 이렇게 연결되어 있는 상태에서 DbGrid 의 Row가 변경이 되...
    • 델파이쌩초보
      2008.12.02 00:55
      백록화님 먼저 관심이 갖고 답변을 해주셔서 너무 감사드립니다. 진작 들어와봤으면 좋았을껄.. ㅎㅎ ...
    • 백록화
      2008.12.02 04:14
      네...각 콤포넌트들 (TDataSet, TDataSource, TDbGrid) 는 서로 유기적으로 묶여져 있습니다. 따라서 어...
    • 델파이쌩초보
      2008.12.04 20:34
      백록화님 정말 감사드립니다. 한번에 정확히 이해를 못하고는 있지만.. 약간 감은 오는 것 같습니다. ...
    • 유경민
    • 2008.11.29 22:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • safebear
      2008.12.01 19:07
      자료실에 원하시는게 있네요 ^^ http://www.delphi.co.kr/zboard/view.php?id=component&page=1&sn1=&...