안녕하세요.. 질답게시판에 달력질문이 올라와서..이렇게 강좌를 올려봅니다.. 이번강좌는 초급,고급 2가지로 나누어서 올리겠습니다.. 그리고 시간나면 응용강좌를 추가로 올리겠습니다..
이번에는 달력을 구현해볼까요... 그럼 달력프로그램은 어디 어디 쓰이는지 부터 생각해봅시다.. 일기장,스케줄이 가장 대표적이네요..(솔직히 다른곳에 어디쓰이는지 생각이..ㅠㅠ ㅈㅅ)
이제 슬슬 달력을 만들어볼까요.. 달력의 구조를 생각해봅시다.. 달력의 크기는 7*7입니다.. 즉 7칸 7줄입니다..간혹 7칸 6줄로 착각하시는 분있는데.. 달력을 잘 살펴보면 보톤 7칸 6출이지만 1일의 위치에 때라 줄수가 달라집니다..
그럼 필요 객체를 설치해봅시다..[초급 설치] < 다음 형태로 설치하세요 > 창
버튼0, 버튼1, 버튼2 에디트0,이름표0, 에디트1,이름표1 문자표0 // 문자표 칸수7, 줄수 7로 설치,칸폭 20 , 칸높이 20,고정종칸수0,고정횡칸수1 사용자함수0
이름표0.제목을 "년"으로하고 이름표1.제목은 "월"로 수정하세요.. 버튼0.제목은 "<<" 1의제목은 "[]" 2의 제목은 ">>"로 수정
문자표의 칸이 모두 잘보이도록 크기를 조절해서 설치하세요.. 자 설치가 완료 되었나요.. 그럼 명령을 해볼까요...
-------------------------//사용자함수0.요일표시//------------------------ 함수:요일표시 //<--- 함수 선언부 -------------------------------------------------------------------------
문자표0.칸내용써(0, 0, "일"); //<---- 첫줄 첫칸에 "일"이라는 문짜를 씁니다.. 문자표0.칸내용써(1, 0, "월"); // <---- 앞숫자는 칸, 뒷숫자는 줄위치를 말합니다.. 문자표0.칸내용써(2, 0, "화"); 문자표0.칸내용써(3, 0, "수"); 문자표0.칸내용써(4, 0, "목"); 문자표0.칸내용써(5, 0, "금"); 문자표0.칸내용써(6, 0, "토");
-------------------------------------------------------------------------
자그럼 요일을 표시했으니 날짜를 표시해볼까요.. 이번 함수는 조금 복잡하고 어렵습니다..
함수:달력표시(실수:년,월,일); //<---- 함수 선언부 --------------------------------------------------------------------------- 실수: 시각수,위치수,수,수1,칸수,크기,일수; //<- 함수에서 사용될 실수지정 에디트0.문자:=수를문(년); // <- 입력받은 년도를 표시 에디트1.문자:=수를문(월); // <- 입력받은 달을 표시 시각수 := 날짜요일( 날짜합쳐(년, 월, 1)); //<-- 입력된 달의 1일의 요일을 알아봅니다 만일(시각수 = 1) 위치수 := 0; 아니면 만일(시각수 = 2) 위치수 :=1; 아니면 만일(시각수 = 3) 위치수 :=2; 아니면 만일(시각수 = 4) 위치수 :=3; 아니면 만일(시각수 = 5) 위치수 :=4; 아니면 만일(시각수 = 6) 위치수 :=5; 아니면 위치수 := 6;
크기 := 달크기(년,월); // <---달크기를 알아서 그만큼만 반복함 수1:=1; 반복{ 반복{ 문자표0.칸내용써(수,수1,""); 수:=수+1; }까지(수>6); 수1:=수1+1; 수:=0; }까지(수1>6); //<=--- 위 반복문은 칸네의 모든 글자를 지워준다
수1:=1; 수:=위치수; //<--달력의 첫줄의 시작위치를 지정함(즉 그달의 1일의 요일위치) 일수:=1; // <-- 달력 표시를 1부터 하도록 지정(하지 않으면 0부터 시작함) 반복{ 반복{ 만일(일수>크기){ 나가 ;} 문자표0.칸내용써(수,수1,수를문(일수)); 수:=수+1; 일수:=일수+1; }까지(수>6); 수1:=수1+1; 수:=0; }까지(수1>6); //<=--- 위 반복문은 칸네의 날짜를 표기하는것이다 ----------------------------------------------------------------------------- 이렇게 해서 달력을 표시를 하도록 했습니다.. 조금 복잡하죠..하지만 몇번이고 보시면 이해를 하실수있을듯...(ㅈㅅ 제설명의 한계입니다..)
---------------------------[ 창0.보여질때 ]-----------------------------------
실수:년,월,일; 년:= 날짜년풀어(현재시간); 월:= 날짜월풀어(현재시간); 일:= 날짜년풀어(현재시간); <---위 부분은 현재 시간에서 년,월,일을 받는 부분
창0.사용자함수0.요일표시; <---- 문자표에 요일을 표시한다 창0.사용자함수0.달력표시(년,월,일); <--- 위에서 만든 사용자함수를 실행 ---------------------------------------------------------------------------
자 우선 실행후 달력표기가 정확히 나오나 봅시다.. 맞지 않타면 위 사용자 부분을 다시 확인해보자..분명이 빠진 부분이 있을것입니다.
그럼 이제 이달 말고 다른달을 볼수있도록 해봅시다..
---------------------------[ 버튼0.클릭했을때 ]------------------------------- 실수:년,월,일; 월:=문을수(에디트1.문자,날짜월풀어(현재시간))-1; //<--- 표시월에서 1을 빼준다 년:=문을수(에디트0.문자,날짜년풀어(현재시간)); 일:=날짜일풀어(현재시간)); 만일(월< 1){월:=12; 년:=년-1;} //<- 1월보다 작은 0월이면 12월로 해주고 1년을 뺀다 사용자함수0.달력표시(년,월,일);
------------------------------------------------------------------------------ 자 그럼 다음달로 넘기는 명령을 볼까요... 위 명령과 비슷하지만 뭐가 다른지 찾아보세요..
---------------------------[ 버튼2.클릭했을때 ]------------------------------- 실수:년,월,일; 월:=문을수(에디트1.문자,날짜월풀어(현재시간))+1; //<--- 표시월에서 1을 더한다 년:=문을수(에디트0.문자,날짜년풀어(현재시간)); 일:=날짜일풀어(현재시간)); 만일(월 > 12){월:=1; 년:=년+1;} //<- 12월보다 큰 13월이면 1월로 해주고 1년을 더한다 사용자함수0.달력표시(년,월,일);
------------------------------------------------------------------------------
아주 쉽죠..
그럼 이제 현제 달도 돌리는 것을 해볼까요... 이것은 창 보여질때 명령을 고대로 쓰시면 됩니다..
------------------------[ 버튼1.클릭했을때 ]--------------------------------- 실수:년,월,일; 년:= 날짜년풀어(현재시간); 월:= 날짜월풀어(현재시간); 일:= 날짜년풀어(현재시간); <---위 부분은 현재 시간에서 년,월,일을 받는 부분
창0.사용자함수0.달력표시(년,월,일); <--- 위에서 만든 사용자함수를 실행
-------------------------------------------------------------------------------
자 이렇게 해서 달력만들기가 끝났습니다.. 솔직해 제 설명이 엉성하고 빠진 부분이 많치만 봐주셔서 감사합니다.. 다음 2강에서는 배경에 그림을 넣는 방법과 좀더 재미난 방법등을 응용해보겠습니다.. 그럼... [소스 자료료 첨부합니다..
|