키스맥 - 4th Dimension 매킨토시 전문 웹 매거진 웹진

  + 파일메이커 기초편
  + 4th Dimension
  + 리얼베이직
  + OS X 10.3
  + 홈페이지 만들기
  + 포토샵 강좌
  + 디카 완전정복
  + 실무로 배우는 Quark
  + MLayout
  + iPod 강좌
  + html 강좌
  + 간단매뉴얼&팁
  + 5세대 iPod 강좌
  + iTunes 한 컷 강좌
  + iPod 한컷강좌
            


Chapter20. 메소드(Method)의 또 다른 사용법 -2-




여러분은 제 16과를 공부하실 때, 아래와 같은 내용을 읽어보셨을 것입니다.

    예제 10) 소문자로 된 문자열을 대문자로 변경하기
    C_STRING (5;vs05_Total)
    vs05_Total := Uppercase ("abcde")
    참고 : Uppercase 명령어는 소문자를 대문자로 전환할 때 사용합니다.
    결과 : 스트링 변수 "vs05_Total"의 최종 결과는 "ABCDE" 입니다.

기억 나십니까? 그 때에는 "아~ 이렇게 되는 거구나~" 라고 이론적으로만 이해하셨을 것입니다. 그러나 어떤 분들은 "이와 같은 예제 문장은 어떻게 만들어서 사용하는 거지?" 라는 의문을 품으셨을지도 모르겠습니다. 꽤나 궁금하셨을 것으로 사료됩니다. ^^

그러므로 지금부터는 이미 16과에서 살펴본 예제 문장을 토대로 그것을 어떻게 만들어 사용하는지 그 과정에 대하여 자세히 살펴보도록 하겠습니다. ^^

지나가는 행인 1 : 으음... 드디어 올 것이 왔군... (ㅋㅋㅋ)

쪼그려 앉은 행인 3 : 오호라~ 이거 정말 흥미진진 해지는걸? 어디 한번 계속 가보자고~ (ㅋㅋㅋ)

그림 46 : 메뉴바의 "Design > Edit Form..." 항목을 선택합니다. 단축키를 사용하여 커멘드(Command)+L 키를 눌러보시기 바랍니다. ^^

그림 47 : 익스플로러 윈도우가 나타나면 빨간 원 1번~4번을 차례대로 눌러줍니다. 여러번 말씀드리지만 빨간 원 4번을 누르시기 귀찮으시다면 빨간 원 3번을 더블-클릭하셔도 됩니다. (Form1 윈도우 안으로 들어가는 과정입니다.)

그림 48 : Form1 윈도우 안으로 들어온 화면입니다. 보시는 화면의 맨 오른쪽 아랫부분에 보시면 파란색의 네모 테두리로 표시된 부분이 있습니다. "1/1"라고 적혀있는 것은 전체 1페이지중에 현재 1페이지 화면을 보여주고 있다는 뜻이 되겠습니다.

참고 1 : 하나의 폼(Form) 윈도우에는 0페이지를 포함하고 있습니다. 0페이지는 폼(Form) 윈도우에서 가장 밑에 깔려있는 레이어(Layer) 윈도우로 0페이지에 만든 모든 오브젝트들은 1페이지를 포함한 그 이상의 페이지에서도 그대로 보이는 성격을 가지고 있습니다.

참고 2 : 위 화면에서 보시는 "1페이지 2페이지 3페이지 4페이지 5페이지"라고 적혀있는 탭-컨트롤 오브젝트는 0페이지에 있는 오브젝트입니다. 그리고 맨 하단에 있는 "나가기" 버튼도 0페이지에 있는 오브젝트이고요. 그러기 때문에 현재 1페이지 화면에서도 그대로 보이게 되는 것입니다.

참고 3 : 개발자가 폼(Form) 윈도우 안에 있는 0페이지를 적절하게 사용하면, 매우 능동적이고 직관적인 구조로 사용하기 편리한 프로그램을 만드실 수 있습니다.

계속해서 이번에는 화면 상단의 맨 왼쪽에 있는 Tools 팔레트에서 빨간색의 네모 테두리로 표시된 "이전 페이지로 이동" 버튼을 누릅니다. (현재 화면에 보이는 1페이지에서 0페이지로 이동하는 과정이 되겠습니다.)

그림 49 : 0페이지로 이동한 모습입니다. 화면에 보이는 탭-컨트롤 오브젝트를 마우스로 클릭하여 선택합니다.

그림 50 : Property List 윈도우에서 하늘색으로 반전된 Width 항목을 선택합니다.

참고 : Width 항목은? 오브젝트의 가로 크기를 조절하는 항목이 되겠습니다. 현재 380 픽셀(Pixels)이라는 수치가 보이네요. 그러면 이 부분을 수정하여 보도록 하겠습니다.

그림 51 : Width 항목을 380에서 590으로 수정해줍니다. 그리고 이번에는 바로 아래에 있는 Height 항목을 선택합니다. (하늘색으로 반전된 부분)

참고 : Height 항목은? 오브젝트의 세로 크기를 조절하는 항목이 되겠습니다.

계속해서 Height 항목을 300에서 380으로 수정하여 준 후, 마우스 커서가 있는 Height 항목을 다시 한번 눌러줍니다.(하늘색으로 반전된 부분)

그림 52 : 파란색으로 표시된 화살표 버튼을 여러번 눌러서 화면을 조금 이동시킨 다음, 탭-컨트롤 오브젝트의 크기가 수정된 화면을 보고 계십니다. 빨간색으로 표시된 좌표를 보시면 쉽게 이해가 가실 것입니다. "나가기" 버튼의 위치도 보기좋게 이동시켜 보았습니다.

이제 0페이지에서는 모든 작업을 마쳤으므로 다시 1페이지로 이동하여 보도록 하겠습니다.

그림 53 : Tools 팔레트에서 빨간색의 네모 테두리로 표시된 "다음 페이지로 이동" 버튼을 누릅니다. (현재 화면에 보이는 0페이지에서 1페이지로 이동하는 과정이 되겠습니다.)

그림 54 : 화면 오른쪽에 파란색으로 표시된 부분에 "1/1"라고 표시되어 있는 것을 통해 현재 1페이지에 있다는 것을 확인할 수 있습니다. (52번 그림의 같은 위치에 있는 "0/1" 부분과 비교하여 보시기 바랍니다. ^^)

계속해서 이번에는 빨간색 1번으로 표시된 "변수 초기화" 버튼을 마우스로 클릭(선택)한 다음, 아래쪽 방향으로 이동시킵니다. (끌어 내립니다. ^^) 그리고 빨간색 2번으로 표시된 "문자열 더하기" 버튼도 vs20_StringTotal 오브젝트 오른쪽 옆으로 이동시켜 줍니다.

그림 55 : 2개의 버튼이 옮겨진 화면입니다. 이번에는 빨간색 네모 테두리로 표시된 "문자열 3 :" 텍스트 오브젝트를 마우스로 클릭(선택)한 다음, 메뉴바의 "Object > Duplicate" 항목을 선택합니다. (똑같은 오브젝트로 복사하는 작업이 되겠습니다.)

참고 : 이 작업의 단축키인 커멘드(Command)+D 키를 외워두시기 바랍니다.

그림 56 : 텍스트 오브젝트 하나가 복사되었습니다. 이번에는 단축키를 눌러서 몇 개 더 복사하도록 하겠습니다. 보시는 화면에서 곧바로 오브젝트 복사 단축키인 커멘드(Command)+D 키를 8번 눌러줍니다.

그림 57 : 총 9개의 "문자열 3 :" 텍스트 오브젝트가 복사되었습니다. 그러면 이것을 보기좋게 정리하여 보도록 하겠습니다.

그림 58 : 마우스를 이용하여 빨간색 네모 테두리로 표시된 위치로 여러개의 텍스트 오브젝트를 정렬한 모습입니다.

그림 59 : 이번에는 텍스트 오브젝트의 가로 크기(Width Size)를 조금 키워보도록 하겠습니다. 빨간원 1번의 위치에서 마우스 버튼을 누르고 빨간원 2번까지 대각선 방향으로 이동시킵니다. 그리고 빨간원 2번 위치에서 마우스 버튼을 놓습니다. 이와 같은 작업을 드래그(Drag)하여 다중-선택 한다고 부릅니다.

그림 60 : 곧바로 Property List 윈도우에서 빨간색 1번~4번까지 차례대로 따라합니다.
빨간 원 1번 표시 : Width 항목을 선택합니다.
빨간 원 2번 표시 : 하늘색으로 반전된 Width 항목에 있는 수치를 160으로 수정합니다.
빨간 원 3번 표시 : 이곳을 다시 한번 눌러서 방금 수정한 값을 적용시킵니다.
빨간 원 4번 표시 : 텍스트 오브젝트 안에 있는 글자들을 정렬하기 위하여 아래방향 스크롤 버튼을 여러번 누릅니다.

그림 61 : 역시 빨간 원 1번~4번까지 차례대로 따라합니다.
빨간 원 1번 표시 : Alignment 항목을 선택합니다. (정렬 방식을 말합니다)
빨간 원 2번 표시 : 콤보 박스(Combo Box) 버튼을 눌러서 여러가지 선택항목을 펼칩니다.
빨간 원 3번 표시 : Right 항목을 선택합니다. (오른쪽 기준으로 정렬합니다.)
빨간 원 4번 표시 : 지금까지 변경한 값을 적용하기 위해 이곳을 누릅니다.

그림 62 : 파란색 네모 테두리로 표시된 부분을 보시면 방금 수정된 작업의 결과가 나타납니다. 계속해서 이번에는 Tools 팔레트에서 빨간 네모로 표시된 "텍스트" 버튼을 선택합니다.

참고 : 빨간 원 1번으로 표시된 "문자열 3 :" 이라고 적혀있는 글자를 수정할 것입니다.

그림 63 : 마우스 커서를 "문자열 3 :" 이라고 적혀있는 오브젝트 위로 올려놓으면 아이빔(I) 입력 커서로 자동으로 바뀝니다. 그곳에서 마우스 버튼을 한번 클릭합니다.

그림 64 : 글자 내용을 "문자열 반복 :"이라고 수정하여 줍니다. 이와 같은 방식으로 나머지 8개의 텍스트 오브젝트를 전부 수정하도록 하겠습니다.

그림 65 : 이와같이 수정하였습니다. ^^ 62번 그림과 비교하여 보시기 바랍니다. 수정을 모두 마치셨다면 Tools 팔레트에서 빨간 네모로 표시된 화살표(Selection tool) 버튼을 눌러줍니다.

그림 66 : 곧바로 빨간 원으로 표시된 빈 영역을(아무곳이나) 한번 눌러줍니다. 파란색 네모로 표시된 오브젝트들이 말끔하게 보입니다. 이번에는 액티브 오브젝트(Active Object)를 추가하여 보도록 하겠습니다. Tools 팔레트에서 빨간 네모로 표시된 액티브 오브젝트(Active Object) 버튼을 클릭합니다.

그림 67 : "문자열 반복 :" 이라고 적혀있는 텍스트 오브젝트 오른쪽 부분에 액티브 오브젝트(Active Object) 하나를 만들어 줍니다.

참고 : 방금 만들어진 액티브 오브젝트(Active Object) 안에 "Variable4"라고 적혀있는 글자가 여러분이 작업한 화면과 다르게 나타난다고 해도 상관이 없습니다. 특별히 숫자 4라는 부분이 다른 숫자로 나타난다고 해도 걱정하지 않으셔도 됩니다. 그러므로 이 부분에 대해서는 안심하셔도 되겠습니다. ^^

그림 68 : 방금 만든 액티브 오브젝트(Active Object)를 여러개 복사하기 위하여 커멘드(Command)+D 키를 2번 더 눌러줍니다.

참고 : 메뉴바를 이용하여 복사하기 원하신다면 55번 그림을 참고하시면 되겠습니다. 메뉴바의 "Object > Duplicate" 항목을 선택하면 됩니다. ^^

그림 69 : 파란색 네모로 표시된 부분과 같이 오브젝트 복사 작업을 여러번 반복한 다음, 해당 오브젝트를 화면에 보이는 것과 같이 적절하게 이동시킵니다.

그림 70 : 이번에는 버튼을 만들기 위하여 Tools 팔레트에서 빨간 네모로 표시된 "Button" 버튼을 클릭합니다.

그림 71 : 빨간 네모로 표시된 위치에 버튼 하나를 만들어 줍니다.

그림 72 : 방금 만든 버튼(Button)을 여러개 복사하기 위하여 커멘드(Command)+D 키를 8번 더 눌러줍니다.

그림 73 : 여러개 복사된 버튼(Button) 오브젝트를 지금 보시는 화면과 같이 보기좋게 재배치 시킵니다. 그리고 총 9개의 버튼(Button) 오브젝트를 한꺼번에 선택하기 위하여 빨간 원 1번부터 2번까지 마우스를 이용하여 드래그(Drag) 선택합니다.

그림 74 : 곧바로 버튼(Button)의 크기를 적절하게 조절하기 위하여 Width 항목의 빨간원 1번~3번과, Height 항목의 빨간원 1번~3번을 차례대로 따라합니다. 그리고 버튼(Button)에 적혀있는 글자를 변경하기 위하여 빨간 원 4번을 여러번 눌러서 조금 위로 이동합니다.

그림 75 : 빨간 원 1번~3번까지 차례대로 따라합니다.

그림 76 : 드디어 버튼(Button) 오브젝트의 크기와 글자 내용이 변경되었습니다. 수정전의 73번 그림과 비교하여 보시기 바랍니다. ^^

그림 77 : 이번에는 마우스를 이용하여 액티브 오브젝트(Active Object)의 크기를 직접 늘려보도록 하겠습니다. 마우스로 일단 액티브 오브젝트(Active Object)를 클릭하여 선택한 다음 ("소문자를 대문자로 :" 옆에 있는 Variable4 오브젝트입니다.) 마우스를 빨간 원으로 표시된 꼭지점에 올려놓으면 상하좌우 화살표 커서 모양으로 자동으로 변합니다. 이곳에서 마우스 버튼을 누르시고 오른쪽으로 끌어줍니다.

그림 78 : 보시는 화면처럼 적절한 크기가 되도록 크기를 늘려준 다음 마우스 버튼에서 손을 뗍니다. 이와 같은 방법으로 나머지 2개의 액티브 오브젝트(Active Object) 크기도 늘려줍니다.

그림 79 : 나머지 2개의 액티브 오브젝트(Active Object) 크기를 똑같이 늘려준 작업후의 화면입니다. ^^

그림 80 : 이번에는 액티브 오브젝트(Active Object)에 변수명을 지정하여 보도록 하겠습니다. 먼저 빨간 네모로 표시된 액티브 오브젝트(Active Object)를 마우스로 클릭하여 선택한 다음 Property List 윈도우에서 빨간 원 1번~3번까지 차례대로 따라합니다. 이와 같은 방법으로 변수명을 전부 수정하여 줄 것입니다.

그림 81 : 이 그림은 수정할 변수명을 미리 적어놓은 것입니다. 이것을 토대로 작업한 결과는 아래와 같습니다.

그림 82 : 이렇게 액티브 오브젝트(Active Object) 들의 변수명을 전부 수정하여 보았습니다.

그림 83 : 이번에는 빨간 네모로 표시된 "변수 초기화" 버튼을 마우스로 클릭하여 선택한 다음, 곧바로 Property List 윈도우에서 빨간 원 1번~3번까지 차례대로 따라합니다. (버튼의 글자를 "모든 변수 초기화"라는 글자로 수정합니다.)

그림 84 : 파란 네모로 표시된 부분에 수정 결과가 보여지네요. 이번에는 빨간 네모로 표시된 "결과" 버튼 속에 메소드 내용을 집어넣도록 하겠습니다. 이번에는 빠른 메소드 윈도우를 호출하는 방법에 대하여 알아보도록 하겠습니다.

순서 1 : 마우스를 이용하여 빨간 네모로 표시된 "결과" 버튼을 클릭하여 선택합니다.
순서 2 : 마우스 커서를 방금 선택한 "결과" 버튼 위로 올려놓으면 손 모양의 커서로 자동으로 변할 것입니다. 이번에는 키보드의 옵션(Option) 키를 누르고 있는 상태에서 다시 한번 빨간 네모로 표시된 "결과" 버튼을 클릭합니다. (앞으로 자주 사용할 것이므로 꼭 외워두시기 바랍니다. ^^)

그림 85 : 이와같이 메소드 윈도우가 나타나면 키보드에서 손을 떼셔도 됩니다. ^^ 화면에 보이는 내용과 동일하게 입력하신 후 메소드 윈도우를 빠져나옵니다.

참고 1 : 맨 윗줄에 보시면 빨간 원으로 표시된 부분에 특수 문자가 있는데 이것을 키보드에서 어떤 키를 눌러서 입력하는지 질문하는 분들이 계시더군요. ^^ 그래서 이번 기회에 그 궁금증을 해결하여 드리도록 하겠습니다. ^^ (제 기억으로는 몇 과인지는 모르겠으나 이 부분에 대하여 한번 설명했던 것으로 기억됩니다. ^^;)

참고 2 : 맨 윗줄에 빨간 원으로 표시된 안쪽 부분에 있는 특수 문자를 Grave accent 기호라고 부릅니다.

참고 3 : 그림에서 빨간 원 안에 있는 특수 문자가(Grave accent ) 맨 앞에 사용되면, 나중에 4D에서 메소드가 실행될 때 그 줄(Line)은 실행에서 제외가 됩니다. 즉, 인식하지 않는다는 뜻이 되겠습니다. 다시 설명드리면 그 줄(Line)은 무시하고 다음 줄(Line)로 무조건 건너뛰게 됩니다. 그러므로 이 특수 기호는 개발자가 메소드 윈도우에서 간단한 메모 내용이나 참고 사항을 적어 둔다던가 또는 주석(관주, 도움말...) 등등의 내용을 함께 기록하여 둘 때 많이 사용합니다.

그림 86 : 여러분이 사용하시는 키보드 맨 왼쪽의 상단 부분에 보시면 숫자 1 키 바로 왼쪽에 있습니다. 그림에서 빨간 네모로 표시된 부분의 키가 되겠습니다. 키보드의 쉬프트(Shift) 키를 누르지 않고 그냥 눌러주시면 됩니다. ^^

그림 87 : 파란 네모로 표시된 부분에 보시면 검은색의 삼각형이 들어간 것을 보실 수 있습니다. 이것은 해당 오브젝트 속에 메소드 내용이 들어있다는 뜻이 되겠습니다. ^^ 계속해서 이번에는 바로 아래에 있는 2번째 "결과" 버튼속에 메소드 내용을 집어넣도록 하겠습니다. 키보드의 옵션(Option) 키를 누르고 있는 상태에서 빨간 네모로 표시된 버튼을 클릭합니다.

참고 : 84번 그림에 보시면 빨간 네모로 표시된 부분에 있는 마우스 커서가 손을 펼친 모양이고 지금 보시는 87번 그림에서는 화살표 모양의 커서로 보입니다. 조금 다르지요?
84번 그림에서는 일단 마우스로 한번 해당 버튼을 클릭한 상태에서 키보드의 옵션(Option) 키를 누르고 해당 버튼을 눌러 메소드 윈도우를 호출한 것이고 지금 보시는 87번 그림에서는 해당 버튼을 선택하지 않은 상태에서 곧바로 키보드의 옵션(Option) 키를 누르고 해당 버튼을 눌러 메소드 윈도우를 호출하는 것입니다. 이제 그 차이점을 아시겠지요? ^^

그림 88 : 메소드 윈도우가 나타나면 키보드에서 손을 떼시고 화면에 보이는 내용과 동일하게 입력하신 후 메소드 윈도우를 빠져나옵니다. (Uppercase 명령어는 소문자로 된 영문 문자열을 대분자로 강제 변환시켜 줍니다.)

그림 89 : 여기서 잠깐! Uppercase 명령어를 살펴보기 위해서는 "4D Study > 4th Dimension 6.8 Manual" 폴더안에 있는 4D_683_Language_Ref.pdf 파일을 열어서 1108 페이지로 이동하시면 됩니다.

그림 90 : 계속해서 키보드의 옵션(Option) 키를 누르고 있는 상태에서 빨간 네모로 표시된 3번째 "결과"을 클릭하여 메소드 윈도우를 호출합니다.

그림 91 : 메소드 윈도우가 나타나면 키보드에서 손을 떼시고 화면에 보이는 내용과 동일하게 입력하신 후 메소드 윈도우를 빠져나옵니다. (Lowercase 명령어는 대문자로 된 영문 문자열을 소분자로 강제 변환시켜 줍니다.)

그림 92 : 여기서 잠깐! Lowercase 명령어를 살펴보기 위해서는 "4D Study > 4th Dimension 6.8 Manual" 폴더안에 있는 4D_683_Language_Ref.pdf 파일을 열어서 1109 페이지로 이동하시면 됩니다.

그림 93 : 지금까지 3개의 "결과" 버튼 속에 직접 메소드 내용을 집어넣어 보았습니다. (파란 네모로 표시된 부분 참고) 그리고 바로 밑에 있는 나머지 6개의 "결과" 버튼들은 조금 다르게 외부에서 메소드를 미리 만들어 놓고 그것을 끌어다 쓰는 방법으로 작업하도록 하겠습니다. 그러면 외부에서 메소드를 만드러 가기 위하여 지금 보고 계시는 Form1 윈도우를 빠져나갑니다.

그림 94 : 익스플로러 윈도우가 다시 활성화 됩니다. 곧바로 빨간 원 1번으로 표시된 Methods 탭-버튼을 클릭합니다.

그림 95 : 빨간 원 1번으로 표시된 삼각형 아이콘을 한번 눌러 펼쳐봅니다. 3개의 메소드가 등록되어 있네요. ^^ 곧바로 빨간 원 2번이 있는 New 버튼을 클릭합니다.

그림 96 : 새로운 메소드를 추가하기 위한 New Method 윈도우가 나타납니다. 이곳에서 메소드 이름을 "Method_Page01_43" 이라고 입력한 후, 하단에 있는 "OK" 버튼을 눌러줍니다.

그림 97 : 위 화면과 동일하게 입력하시고 빠져나옵니다.

그림 98 : 방금 새롭게 추가한 "Method_Page01_43" 메소드가 화면 왼쪽에 보이는군요. (하늘색으로 반전된 부분) 그리고 화면 오른쪽에는 메소드 내용이 간략하게 보이고요. ^^ 계속해서 또 다른 메소드를 추가하기 위하여 왼쪽 하단에 있는 New 버튼을 다시 한번 눌러줍니다.

그림 99: 이번에는 메소드 이름을 "Method_Page01_53" 이라고 입력한 후, 하단에 있는 "OK" 버튼을 누릅니다.

그림 100: 위 화면과 동일하게 입력하시고 빠져나옵니다.

그림 101 : 방금 추가한 "Method_Page01_53" 메소드가 화면 왼쪽에 보입니다. (하늘색으로 반전된 부분) 계속해서 또 다른 메소드를 추가하기 위하여 왼쪽 하단에 있는 New 버튼을 눌러줍니다.

그림 102 : 이번에는 메소드 이름을 "Method_Page01_63" 이라고 입력한 후, 하단에 있는 "OK" 버튼을 누릅니다.

그림 103 : 위 화면과 동일하게 입력하시고 빠져나옵니다.

그림 104 : 여기서 잠깐! Int 명령어를 살펴보기 위해서는 "4D Study > 4th Dimension 6.8 Manual" 폴더안에 있는 4D_683_Language_Ref.pdf 파일을 열어서 616 페이지로 이동하시면 됩니다.


그림 105 : 방금 추가한 "Method_Page01_63" 메소드가 화면 왼쪽에 보입니다. (하늘색으로 반전된 부분) 계속해서 또 다른 메소드를 추가하기 위하여 왼쪽 하단에 있는 New 버튼을 눌러줍니다.

그림 106 : 이번에는 메소드 이름을 "Method_Page01_73" 이라고 입력한 후, 하단에 있는 "OK" 버튼을 누릅니다.


그림 107 : 위 화면과 동일하게 입력하시고 빠져나옵니다.

참고 : 나머지 값을 구할 때 사용하는 연산자 기호는 "%" 퍼센트 기호입니다.

그림 108 : 방금 추가한 "Method_Page01_73" 메소드가 화면 왼쪽에 보입니다. (하늘색으로 반전된 부분) 계속해서 또 다른 메소드를 추가하기 위하여 왼쪽 하단에 있는 New 버튼을 눌러줍니다.

그림 109 : 이번에는 메소드 이름을 "Method_Page01_83" 이라고 입력한 후, 하단에 있는 "OK" 버튼을 누릅니다.


그림 110 : 위 화면과 동일하게 입력하시고 빠져나옵니다.

참고 : Int 명령어를 살펴보기 위해서는 "4D Study > 4th Dimension 6.8 Manual" 폴더안에 있는 4D_683_Language_Ref.pdf 파일을 열어서 616 페이지로 이동하시면 됩니다.

그림 111 : 방금 추가한 "Method_Page01_83" 메소드가 화면 왼쪽에 보입니다. (하늘색으로 반전된 부분) 계속해서 마지막 메소드를 추가하기 위하여 한번 더 왼쪽 하단에 있는 New 버튼을 눌러줍니다.

그림 112 : 이번에는 마지막 메소드 이름으로 "Method_Page01_93" 이라고 입력한 후, 하단에 있는 "OK" 버튼을 누릅니다.

그림 113 : 위 화면과 동일하게 입력하시고 빠져나옵니다.

참고 : 지수 값을 구할 때 사용하는 연산자 기호는 "^" 꺽쇠 기호입니다. 영어로는 Circumflex 기호라고 부릅니다.

그림 114 : 방금 추가한 "Method_Page01_93" 메소드가 화면 왼쪽에 보입니다. (하늘색으로 반전된 부분) 지금까지 총 6개의 새로운 메소드를 추가하여 보았습니다. 그러면 파란 원 1번부터 6번까지 등록한 메소드들을 이번에는 폼 윈도우 안에 있는 여러개의 버튼들과 연결하도록 하겠습니다. 곧바로 빨간 원 1번으로 표시된 Forms 탭-버튼 클릭합니다.

그림 115 : 빨간 원으로 표시된 순서대로 누르시고, 특별히 빨간 원 2번에서 더블-클릭하여 Form1 윈도우로 들어갑니다.

그림 116 : 키보드의 옵션(Option) 키를 누르고 있는 상태에서 곧바로 빨간 네모로 표시된 4번째 "결과" 버튼을 클릭합니다.

그림 117 : 메소드 윈도우가 나타나면 그림과 동일하게 입력하고 빠져나옵니다.

참고 : 114번 그림에서 파란 원 1번에 있는 메소드 이름을 적으시면 됩니다.

그림 118 : 계속해서 키보드의 옵션(Option) 키를 누르고 있는 상태에서 곧바로 빨간 네모로 표시된 5번째 "결과" 버튼을 클릭합니다.

그림 119 : 메소드 윈도우가 나타나면 그림과 동일하게 114번 그림에서 파란 원 2번이 표시되어 있는 메소드 이름을 적어주고 빠져나옵니다.

그림 120 : 계속해서 키보드의 옵션(Option) 키를 누르고 있는 상태에서 곧바로 빨간 네모로 표시된 6번째 "결과" 버튼을 클릭합니다.


그림 121 : 메소드 윈도우가 나타나면 그림과 동일하게 114번 그림에서 파란 원 3번이 표시되어 있는 메소드 이름을 적어주고 빠져나옵니다.

그림 122 : 계속해서 키보드의 옵션(Option) 키를 누르고 있는 상태에서 곧바로 빨간 네모로 표시된 7번째 "결과" 버튼을 클릭합니다.

그림 123 : 메소드 윈도우가 나타나면 그림과 동일하게 114번 그림에서 파란 원 4번이 표시되어 있는 메소드 이름을 적어주고 빠져나옵니다.

그림 124 : 계속해서 키보드의 옵션(Option) 키를 누르고 있는 상태에서 곧바로 빨간 네모로 표시된 8번째 "결과" 버튼을 클릭합니다.

그림 125 : 메소드 윈도우가 나타나면 그림과 동일하게 114번 그림에서 파란 원 5번이 표시되어 있는 메소드 이름을 적어주고 빠져나옵니다.

그림 126 : 마지막으로 키보드의 옵션(Option) 키를 누르고 있는 상태에서 곧바로 빨간 네모로 표시된 9번째 "결과" 버튼을 클릭합니다.

그림 127 : 메소드 윈도우가 나타나면그림과 동일하게 114번 그림에서 파란 원 6번이 표시되어 있는 메소드 이름을 적어주고 빠져나옵니다.

그림 128 : 총 6개의 "결과" 버튼에 외부 메소드를 연결한(집어 넣은) 모습입니다. (파란 네모로 표시된 부분 참고) 이제 이 곳에서의 작업은 모두 마쳤으므로 빠져나갑니다.

그림 129 : 익스플로러 윈도우에서 빨간 원 1번으로 표시된 Methods 탭-버튼을 클릭합니다.

그림 130 : 빨간 원 2번으로 표시된 "Compiler_Sample" 메소드에서 더블-클릭합니다. (메소드 내용을 수정 및 추가하기 위한 작업을 할 것입니다.)

그림 131 : "Compiler_Sample" 메소드 윈도우가 나타나면 빨간 원으로 표시된 부분에 마우스 커서를 올려놓고 잠시 기다리시면 커서 모양이 "상하 이동" 아이콘으로 바뀔 것입니다. 이곳에서 마우스 버튼을 누르시고 맨 아랫 방향으로 최대한 끌어내립니다. 메소드 내용이 화면에 많이 보일 수 있도록 작업 영역을 늘려주는 모습입니다.

그림 132 : 이미 입력되어 있는 내용을 수정 및 추가하시면서 화면에 보이는 내용과 동일하게(빨간 네모로 표시된 부분) 입력합니다.

그림 133 : 계속해서 빨간 네모로 표시된 나머지 부분도 입력하시고 "Compiler_Sample" 메소드 윈도우를 빠져나옵니다.

그림 134 : 이번에는 빨간 원 1번으로 표시된 "Initialize_Sample" 메소드를 더블-클릭합니다. (메소드 내용을 수정 및 추가하기 위한 작업을 할 것입니다.)

그림 135 : "Initialize_Sample" 메소드 윈도우가 나타나면 131번 그림에서 이미 설명한 것처럼 메소드 작업 영역을 최대한 늘려줍니다.

그림 136 : 이미 입력되어 있는 내용을 수정 및 추가하시면서 화면에 보이는 내용과 동일하게(빨간 네모로 표시된 부분) 입력합니다.

그림 137 : 계속해서 빨간 네모로 표시된 부분을 이어서 입력하여 줍니다.

그림 138 : 계속해서 빨간 네모로 표시된 나머지 부분도 입력하시고 "Initialize_Sample" 메소드 윈도우를 빠져나옵니다.

그림 139 : 다시 익스플로로 윈도우로 돌아오면 Forms 탭-버튼을 눌러 이동합니다.

그림 140 : 하늘색으로 반전된 Form1 항목을 더블-클릭하여 안으로 들어갑니다.

그림 141 : 이번에는 계산의 결과를 보여줄 9개의 액티브 오브젝트(Active Object)를 보기 전용으로 만들어주기 위하여 빨간 원 1번부터 2번까지 마우스를 드래그(Drag)하여 다중-선택 합니다.

그림 142 : Property List 윈도우에서 Enterable 항목을 선택하시고(하늘색으로 반전된 부분) 바로 오른쪽 옆에 있는 체크박스를 비활성(해제) 시킵니다.

참고 : Enterable 항목은 데이타의 입력을 허용하거나 또는 불가하게 만드는 옵션입니다. Enterable 항목에 있는 체크박스 기호를 활성화 시키면 어떠한 데이타의 입력이 가능집니다. 반대로 Enterable 항목을 비활성(해제) 시키면 데이타의 내용을 볼 수만 있고 그 안으로 입력 커서가 들어가지 않게 됩니다. 즉 보기전용(잠긴) 상태가 되는 것이지요. ^^


그림 143 : Enterable 속성이 비활성으로 된 결과입니다. 속성이 변하기 전의 141번 그림과 비교해보니 색상이 약간 어두워졌군요. ^^

그림 144 : 이제 모든 작업을 마쳤으므로 본 프로그램을 실행하러 가자고요. ^^ 지금 보시는 Form1 윈도우를 빠져나옵니다.

그림 145 : 익스플로러 윈도우도 닫습니다.

그림 146 : 빨간색 원으로 표시된 유저-엔바이론먼트 윈도우 아무곳이나 눌러서 유저-모드로 빠르게 전환합니다. 그리고 빨간색 네모로 표시된 "윈도우 확대 및 축소" 버튼을 한번 눌러줍니다.

그림 147 : 윈도우가 크게 커졌습니다. 이제 실행하기 위하여 아무곳이나 더블-클릭합니다. (빨간색 원으로 표시된 부분 참고)

그림 148 : 드디어 실행되었네요. ^^ 그러면 맨 위에 있는 "문자열 1 :" 오브젝트 안에 적절한 데이타를 입력하도록 하겠습니다.


그림 149 : 빨간 원 1번부터 3번까지 차례대로 따라합니다. (여러번 실습했지요? ^^)

그림 150 : "문자열 3 : " 항목에 서로 다른 문자열끼리 더한 결과가 보여지네요. 계속해서 빨간 원 1번부터 3번까지 그대로 따라합니다.

그림 151 : 같은 문자열을 3번 반복한 결과가 보여지는군요. ^^ (이 결과는 85번 그림에서 설명한 메소드 내용이 실행된 결과입니다.)

그림 152 : 계속해서 소문자를 입력하고 결과 버튼을 누른 결과입니다. (이 결과는 88번 그림에서 설명한 메소드 내용이 실행된 결과입니다.)

그림 153 : 계속해서 대문자를 입력하고 결과 버튼을 누른 결과입니다. (이 결과는 91번 그림에서 설명한 메소드 내용이 실행된 결과입니다.)

그림 154 : 2개의 숫자끼리 서로 더한 결과입니다. (이 결과는 97번 그림에서 설명한 메소드 내용이 실행된 결과입니다.)

그림 155 : 2개의 숫자끼리 서로 나눈 결과입니다. (이 결과는 100번 그림에서 설명한 메소드 내용이 실행된 결과입니다.)

그림 156 : 2개의 숫자를 서로 나눈 뒤 그 값에서 정수만 추출한 결과입니다. (이 결과는 103번 그림에서 설명한 메소드 내용이 실행된 결과입니다.)

그림 157 : 2개의 숫자를 서로 나눈 뒤 나머지 값의 결과입니다. (이 결과는 107번 그림에서 설명한 메소드 내용이 실행된 결과입니다.)

그림 158 : 소숫점이 들어간 값에서 정수만 추출한 결과입니다. (이 결과는 110번 그림에서 설명한 메소드 내용이 실행된 결과입니다.)

참고 : 이상하네요. @@; 결과 값으로 숫자 123이 나와야 하는데 엉뚱한 숫자가 나와버렸습니다. ^^;
왜냐하면 소숫점이 포함된 값에서 정수를 추출하면 소숫점은 버리게 되거든요. 드디어 첫번째 버그(Bug)를 만났습니다. ^^* 이 감격~ ㅠ.ㅠ (이게 아닌가? =.=) 그러면 조금 이따가 이 부분을 수정하여 보도록 하겠습니다. ^^*


그림 159 : 마지막으로 2개의 숫자를 이용하여 지수를 구한 결과입니다. (이 결과는 113번 그림에서 설명한 메소드 내용이 실행된 결과입니다.) 계속해서 이번에는 파란 네모로 표시된 "모든 변수 초기화" 버튼을 눌러보도록 하겠습니다.

그림 160 : 경쾌한 손놀림으로 버튼을 누르자고요. ^^

참고 : 이 버튼을 누를 때 30번 그림의 메소드가 실행되며, 실제적으로는 134번 그림에서 빨간 원 1번으로 표시된 "Initialize_Sample" 메소드가 실행되는 것입니다. 그리고 "Initialize_Sample" 메소드의 실제 내용은 136번 그림부터 138번 그림까지 입니다.)

그림 161 : 모든 변수를 깨끗하게 초기한 후의 화면입니다. 148번 그림과 똑같지요? ^^ 이제 158번 그림에서 소숫점이 들어간 값에서 정수만 추출하는 결과가 잘못 계산되어 나오는 버그(Bug)를 수정하여 보도록 하겠습니다. 먼저 오른쪽 하단에 있는 "나가기" 버튼을 눌러줍니다.

그림 162 : 메뉴바의 "Design > Edit Form..." 항목을 선택합니다. (단축키는 다 외우셨지요? 화면에 보이는대로 커멘드(Command)+L 키입니다. ^^)

그림 163 : 익스플로러 윈도우가 나타나면 빨간 원 1번이 표시되어 있는 Methods 탭-버튼을 누르시고 곧바로 빨간 원 2번으로 표시된 "Compiler_Sample" 메소드를 더블-클릭하여 열어줍니다.

그림 164 : "Compiler_Sample" 메소드 윈도우 안으로 들어온 화면입니다. 빨간 네모로 표시된 버튼을 여러번 눌러 맨 아랫쪽으로 내려갑니다.

그림 165 : 드디어 문제가 일어난 부분을 찾았습니다. 빨간 네모로 표시된 부분입니다. 그러면 이 부분을 수정하여 보도록 하겠습니다.

그림 166 : 이렇게 해결하여 보았습니다. 소숫점이 들어간 데이타를 입력받을 "vi_Num_81" 변수는 리얼타입의 C_REAL 컴파일러 지시어로 선언해야 정상입니다. 그리고 정수를 추출하여 그 결과를 보여줄 "vi_Result_83" 변수는 인티저 타입의 C_INTEGER 컴파일러 지시어로 선언하는 것이 맞고요. ^^ 수정을 마치셨다면 윈도우를 닫고 빠져나옵니다. (아래의 내용은 보충설명입니다.)

그림 167 : 숫자와 관련된 보다 자세한 내용을 살펴보기 원하신다면 "4D Study > 4th Dimension 6.8 Manual" 폴더안에 있는 4D_683_Language_Ref.pdf 파일을 열어서 69 페이지로 이동하시면 됩니다.

주의 1 : 소숫점이 들어가는 숫자 데이타를 취급하기 위해서는 반드시 C_REAL 컴파일러 지시어를 사용하여 변수를 선언하십시오.

주의 2 : 음수(-) 32768 부터 시작하여 양수(+) 32767 까지의 숫자 데이타를 취급하기 위해서는 반드시 C_INTEGER 컴파일러 지시어를 사용하여 변수를 선언하십시오.

주의 3 : C_INTEGER 컴파일러 지시어의 숫자 범위를 뛰어넘는 큰 단위의 숫자 데이타를 추급하기 위해서는 C_LONG 컴파일러 지시어를 사용하여 변수를 선언하십시오.

그림 168 : 그리고 C_REAL 컴파일러 지시어 대한 내용은 "4D Study > 4th Dimension 6.8 Manual" 폴더안에 있는 4D_683_Language_Ref.pdf 파일을 열어서 332 페이지에 있습니다.

그림 169 : 익스플로러 윈도우를 빠져나옵니다.

그림 170 : 빨간색 원으로 표시된 유저-엔바이론먼트 윈도우 아무곳이나 눌러서 유저-모드로 빠르게 전환합니다. 그리고 빨간색 네모로 표시된 "윈도우 확대 및 축소" 버튼을 한번 눌러줍니다.

그림 171 : 윈도우가 크게 커졌습니다. 이제 실행하기 위하여 아무곳이나 더블-클릭합니다. (빨간색 원으로 표시된 부분 참고)

그림 172 : 소숫점이 들어간 값에서 정수만 추출한 결과입니다. (이 결과는 110번 그림에서 설명한 메소드 내용이 실행된 결과입니다.) 이제야 정상적으로 잘 나오는군요. ^^ 아이~ 좋아라~ *^^* 이제 테스트를 마쳤으므로 빨간 원 4번에 있는 "나가기" 버튼을 눌러서 밖으로 빠져나옵니다.

그림 173 : 초기화면으로 돌아온 화면입니다. 지금까지 공부하시느라 고생 많으셨습니다. ^^ 그러면 다음번 21과에서 다시 만나도록 하겠습니다. ^^

질문 1) 그림 8번에서 설명하신 컴파일에 대한 질문인데요~ 컴파일 된 파일에서도 수정이 가능하나요? 예를 들면, 버그 같은 것이 발생했을 때 말예요.
답변 1) 기본적으로는 컴파일 된 파일에서는 수정이 불가능합니다. 즉, 어떠한 버그(Bug)를 발견하게 되면 원본 소스에서 수정한 다음, 그것을 다시 컴파일하는 작업 수순을 밟게 됩니다. ^^ 물론 컴파일된 파일을 ResEdit(레즈에딧) 이나 또는 Resorcerer(리소서러) 같은 프로그램으로 간단한 조작 및 살짜쿵 변경(?)이 가능하지만 극히 일부기능에만 해당됩니다. 그러므로 버그(Bug)를 수정하기 위해서는 실제 원본 소스를 해당 개발 툴로 직접 수정하는 방법이 가장 확실한 정석이 되겠지요. ^^

질문 2) 메소드(Method) 말인데요~ 매킹톳슈님은 어떤 방법을 즐겨 사용하시나요?
답변 2) 개발자마다 메소드(Method)를 구현하는 방법은 전부 다를것입니다.^^
저는 간단한 샘플을 만들때는 19과의 첫번째 방법을 사용하기도 하지만, 샘플 프로그램의 덩치가 조금 커질때에는 아예 처음부터 19과의 두번째 방법을 사용하기도 합니다. 그리고 쳬계적으로 어떠한 프로그램을 만들어야겠다고 작심할 때에는 오늘 20과에서 살펴 본 것과 같이 3번째 방법을 선택하거나 또는 여기에서 더욱 확장된 방법을 폭넓게 사용하기도 합니다. 그리고 만들고자 하는 프로그램의 덩치가 커질수록 메소드(Method)의 양도 늘어나게 됩니다. 작게는 수십개에서 많게는 수백개 이상의 메소드(Method)를 추가할때도 있습니다.

"보기 좋은 떡이 먹기도 좋다"라는 옛말이 있듯이 작업하는 중간중간마다 서로 연관이 있는 메소드(Method) 끼리 잘 분류 및 정리해두거나 또는 메소드 이름만 보더라도 이것은 어디에 사용하는 것인지 쉽게 구분할 수 있도록 적지않은 신경과 시간을 투자하기도 합니다. ^^ 물론 처음부터 완벽한 메소드(Method)를 작성할 수는 없습니다. 마치 벽돌을 한장 한장 쌓아 올라가듯이 처음에는 한개의 메소드(Method)부터 시작해서 필요로 할 때마다 한개 두개 또는 10개, 20개... 등과 같이 일괄적으로 추가하기도 합니다. 그리고 작업이 거의 완료 되었을 때에는 혹시라도 중복되는 부분은 없는지 또는 불필요한 부분은 없는지 등을 확인하여 다시 삭제하거나 또는 최적화 시키는 작업을 거치기도 합니다. ^^ 참고 내용이 되었는지요.

질문 3) 숫자끼리 더하고 빼고 하는 연산자 기호 말인데요~ 이거는 어느 메뉴얼에 나와있나요? 도저히 못 찾겠어요. ㅠ.ㅠ
답변 3) 질문하신 내용은 "4D Study > 4th Dimension 6.8 Manual" 폴더안에 있는 4D_683_Language_Ref.pdf 파일을 열어서 65 페이지를 보시면 있습니다.

그림 174 : 연산자(Operators)와 관련된 곳의 메뉴얼 화면입니다. 시간이 나실때마다 61페이지부터 시작하여 132페이지까지 비록 이해는 잘 안되더라도 자주 들여다 보시면 나중에라도 큰 도움이 되실 것입니다. 아~ 참! 컴퓨터로 4D_683_Language_Ref.pdf 메뉴얼을 들여다보는게 번거로우시다면 아예 프린터로 출력하여 각 파트별로 조각조각 나누어 묶어두는 방법도 있습니다. ^^

질문 4) 136번 그림부터 138번 그림과 같이 메소드 내용이 많은 윈도우에서 말인데요~ 마우스에 있는 휠 기능이 먹히지 않네요. 해결 방법이 있을까요?
답변 4) 4D에서는 마우스의 휠 기능이 먹히는 부분이 있고 먹히지 않는 부분이 있습니다. 결론부터 말씀드리면 질문하신 메소드 윈도우에서는 마우스의 휠 기능이 먹히지 않습니다. 저도 무척이나 아쉬워하며 개선되었으면 하는 부분입니다. 요즘 나오는 최신버전에서는 해결이 됐을지 모르겠네요. ^^;



[편집자 주] 이미지를 클릭하시면 원본사이즈의 이미지를 볼 수 있습니다.



현재글 - Chapter20. 메소드(Method)의 또 다른 사용법 -2-
이전글 - Chapter20. 메소드(Method)의 또 다른 사용법 -1-