• 검색 결과가 없습니다.

4-2

N/A
N/A
Protected

Academic year: 2022

Share "4-2"

Copied!
29
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

4-2 마우스(Mouse)

 마우스 이벤트

Click 이벤트

마우스 버튼이 눌렸다가 떼어질 때 발생

DblClick 이벤트

마우스 버튼이 두 번 눌렸다가 떼어질 때 발생

MouseDown 이벤트

마우스 버튼이 눌렸을 때 발생

MouseUp 이벤트

마우스 버튼이 떼어질 때 발생

MouseMove 이벤트

마우스가 움직일 때 발생

DragOver 이벤트

마우스 버튼을 누른 상태에서 끌기를 했을 때 발생

DragDrop 이벤트

마우스 끌기를 하고 누른 버튼을 놓았을 때 발생

(2)

4-2 마우스(Mouse)

 마우스 관련 메소드

Line 메소드

한 객체 위에 선이나 사각형을 그린다.

(x1, y1)은 시작점을 의미하며, (x2, y2)는 종료점을 의미하는데 종료점 -(x2, y2)만 기술하면 시작점은 CurrentX와 CurrentY가 된다.

CurrentX와 CurrentY는 먼저 그려진 선의 종료점을 가리킨다.

처음 사용하는 선인데 (x2, y2)만 기술하게되면 CurrentX와 CurrentY의 값은 (0, 0)이 된다.

객체.Line [Step] (x1, y1) [Step] (x2, y2), [color], [B][F]

(3)

4-2 마우스(Mouse)

 마우스 관련 메소드

Move 메소드

한 객체를 특정위치까지 이동시킴

left와 top은 객체의 위치를 나타냄

width와 heiht는 객체의 크기를 나타냄

객체를 끌어다 놓기를 할 때 유용하게 사용

Drag 메소드

Line, Menu, Shape, Timer, CommonDialog 컨트롤을 제외한 컨트롤들 의 끌어놓기 작업을 시작하고, 끝내고, 취소시키는 작업을 함

동작값으로는 끌어놓기 작업을 취소하는 vbCancel인 0값과 끌어놓기를 시작하는 vbBeginDrag 인 1값 그리고 끌어놓기를 끝내는 vbEndDrag인 2값을 갖음

단, Drag 메소드를 사용할 때는 사용하려는 컨트롤의 DragMode속성이

“0 - 수동”으로 되어 있어야함

객체.Move left, top, width, height

객체.Drag 동작값

(4)

4-2 마우스(Mouse)

 마우스 관련 메소드

실습 4-2

마우스를 이용하여 화면에 일반적인 선을 그려봄

(5)

4-2 마우스(Mouse)

 마우스 관련 메소드

실습 4-2

“선 그리기 예제 1” 프로그램은 폼위에서 마우스 버튼을 누를 때마다 즉, MouseDown 이벤트가 발생했을 때 눌린 위치까지 선을 그리는 동작을 한다. 이 프로그램에 쓰인 컨트롤은 폼 자체 밖에 없으며, 그 폼에 설정 된 속성과 코드는 다음과 같다.

frmLine1의 속성

속성 속성값

(Name) frmLine1 Caption 선 그리기 예제 1

(6)

4-2 마우스(Mouse)

 마우스 관련 메소드

실습 4-2

마우스 버튼이 눌렸을 때 실행되는 코드

이제 프로그램을 작동시켜보자 잘 작동하는가?

프로그램 오른쪽 상단의 최소화 버튼을 눌렀다가 다시 활성화 시켜보자.

지금까지 그렸던 선들이 없어진 것을 확인 할 수 있다.

이는 프로그램이 최소화되면서 선들이 가지고 있던 메모리를 Windows 운영체제에게 반납해버리고 되돌려 받지 못하기 때문이다.

해결하기 위해서는 프로그램 자신만의 화면 메모리 영역을 필요로 하는 데, 비주얼베이직에서는 이를 간단히 해결할 수 있다.

폼의 AutoReDraw 속성을 True로 만들어 준다.

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Line -(X, Y) 'Line (CurrentX, CurrentY)-(X, Y) 와 동일 End Sub

(7)

4-2 마우스(Mouse)

 마우스 관련 메소드

실습 4-3

마우스를 자연스럽게 이용하여 선을 나타내어 봄

(8)

4-2 마우스(Mouse)

 마우스 관련 메소드

실습 4-3

“선 그리기 예제 2” 프로그램은 “선 그리기 예제 1” 프로그램과는 달리 마우스가 움직일 때 선을 그린다. 좀 더 분석하면 마우스의 버튼이 눌린 상태에서 움직일 때 선을 그리고 마우스의 버튼을 놓으면 선을 그리지 않는다.

frmLine2의 속성

속성 속성값

(Name) frmLine2 Caption 선 그리기 예제 2

AutoReDraw

True

(9)

4-2 마우스(Mouse)

 마우스 관련 메소드

실습 4-3

마우스 버튼이 눌렸을 때 실행되는 코드

마우스 버튼이 움직일 때 실행되는 코드

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

DrawNow = True '마우스 버튼이 눌리면 True로 설정

'현재의 마우스 위치를 기억 CurrentX = X

CurrentY = Y End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

If DrawNow Then '마우스 버튼이 눌렸는지 체크

'기억된 위치부터 선과 원을 그림 Line -(X, Y)

Circle (X, Y), 50 End If

End Sub

(10)

4-2 마우스(Mouse)

 마우스 관련 메소드

실습 4-3

마우스 버튼이 떼어질 때 실행되는 코드

폼의 일반선언부에 선언될 변수

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

DrawNow = False '마우스 버튼이 놓이면 False로 설정 End Sub

Dim DrawNow As Boolean '마우스의 상태를 기억하는 전역(Public)변수 선언

(11)

4-2 마우스(Mouse)

 마우스 관련 메소드

실습 4-4

사용자가 마우스를 폼위의 아이콘을 끌어다 놓았을 때 그 위치로 아이콘 이 이동하는 동작을 나타내는 프로그램을 작성

(12)

4-2 마우스(Mouse)

 마우스 관련 메소드

실습 4-4

Drag & Drop 예제에 사용된 컨트롤

(13)

4-2 마우스(Mouse)

 마우스 관련 메소드

실습 4-4

속성표

폼위의 아이콘을 마우스로 끌어다 놓았을 때 실행되는 코드

컨트롤 이름 컨트롤 종류 사용된속성

frmDrag (Name) = frmDrag

Caption = Drag & Drop 예제 imgDrag 이미지

(Name) = imgDrag DragMode = 1 - 자동 Picture = Drag1pg.ico

Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single) Source.Move X, Y 'Source 는 현재 이벤트에 사용중인 컨트롤이름 'Source 즉, imgDrag객체를 DragDrop된 위치에 이동 End Sub

(14)

4-2 마우스(Mouse)

 마우스 관련 메소드

실습 4-4

이 프로그램은 드래그 시키려는 객체의 DragMode 속성을 “1 - 자동”으 로 설정해야 한다. 만일 DragMode속성을 “0 - 수동”으로 설정하면 이 프로그램은 제대로 동작하지 않는다. 이때는 Drag 메소드를 이용해 코 딩하여야한다.

imgDrag 컨트롤의 DragMode 속성이 “0 - 수동”으로 설정되어 있을 경우 다음의 코드를 imgDrag 컨트롤의 MouseDown 이벤트에 추가시킨다.

Private Sub imgDrag_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

imgDrag.Drag 'imgDrag 컨트롤 위에서 마우스 버튼을 눌렀을 경우 _ 드래그 를 시작

End Sub

(15)

4-3 MDI(Multiple Document Interface)

지금까지는 하나의 폼에서만 프로그램을 작성

SDI (Single Document Interface) 형태의 프로그램이었다. SDI 란 하나의 문서를 가지는 형태를 말한다.

MDI의 의미

여러 개의 폼을 포함하는 형태

(16)

 메뉴를 포함하는 문서 편집기 프로그램

실습 4-5

실습 4-2, 4-3, 4-4의 예제를 MDI 형태로 묶어서 별도의 메뉴 프로그 램을 작성

4-3 MDI(Multiple Document Interface)

(17)

 MDI 폼 추가

MDI 폼 추가하기 위한 순서

먼저 각 폼을 실행시키는 폼 즉, MDI 형태의 폼을 만들어야 한다.

“프로젝트” 메뉴에서 “MDI 폼 추가” 항목을 선택

4-3 MDI(Multiple Document Interface)

(18)

 MDI 폼 추가

MDI 폼 추가하기 위한 순서

“MDI 폼 추가” 항목을 선택하면 다음의 대화상자가 나타나는데 “열기”

를 선택한다.

4-3 MDI(Multiple Document Interface)

(19)

 MDI 폼 추가

MDI 폼 추가하기 위한 순서

이제 MDI 형태의 폼이 만들어지며, 프로젝트 윈도우에서 확인가능

4-3 MDI(Multiple Document Interface)

(20)

 MDI 폼 추가

“마우스 처리 프로그램”의 컨트롤과 속성지정

폼 frmMDI 의 속성

4-3 MDI(Multiple Document Interface)

속성이름 속성값

(Name) frmMDI

Caption 마우스 처리 프로그램

(21)

 MDI 폼 추가

“마우스 처리 프로그램”의 컨트롤과 속성지정

메뉴 에디트 컨트롤의 속성

메뉴에 “&”문자를 표현하려면 “&”문자 앞에 똑같이 “&”를 연속해서 지정 해야한다. 이유는 “&”문자가 메타문자이기 때문이다.

4-3 MDI(Multiple Document Interface)

(22)

 SDI 폼 추가

별도의 SDI 폼을 추가하기 위한 순서

MDI 폼과 마찬가지로 “프로젝트” 메뉴에서 선택하지만 “폼 추가” 항 목을 선택해야 한다.

마찬가지로 대화상자가 나타나는데 다음과 같다.

4-3 MDI(Multiple Document Interface)

(23)

 SDI 폼 추가

별도의 SDI 폼을 추가하기 위한 순서

여기서 “열기”를 선택해서 폼을 작성할 수도 있지만 이미 예제 프로그 램들을 작성했으므로 대화상자에서 왼쪽 상단의 “기존 파일” 탭을 선 택하고 나면 다음의 대화상자로 변한다.

4-3 MDI(Multiple Document Interface)

(24)

 SDI 폼 추가

별도의 SDI 폼을 추가하기 위한 순서

여기서 추가할 폼 파일을 선택

선택할 폼 파일은 “frmDrag.frm”, “frmLine1.frm”, “frmLine2.frm”들 로 구성되어 있으며 같은 방법으로 세 개의 폼을 추가하고 이를 프로젝 트 윈도우에서 확인

메인으로 실행할 폼을 선택해 주어야 하는데 “프로젝트” 메뉴에서 “속 성” 항목을 선택해서 설정

4-3 MDI(Multiple Document Interface)

(25)

 SDI 폼 추가

별도의 SDI 폼을 추가하기 위한 순서

“Project1 속성” 항목을 선택하면 다음의 대화상자를 볼 수 있는데 “시 작 개체”란 콤보 박스에서 “frmMDI”를 선택

4-3 MDI(Multiple Document Interface)

(26)

 SDI 폼 추가

별도의 SDI 폼을 추가하기 위한 순서

“마우스 처리” 프로그램 실행화면을 보면 각 예제 프로그램들이 MDI 폼안에서만 움직인다. 다른 말로 표현하면 폼 “frmMDI”는 부모 윈도 우이고 각 예제 폼들은 자식 윈도우들이다.

부모 윈도우가 자식 윈도우를 생성하고 자식 윈도우는 부모 윈도우 안에 서 작동하는 것이다. 이렇게 작동을 하게 하려면 각 예제 폼들을 자식 윈 도우로 설정해야 하는데 그 방법으로는 다음과 같이 자식으로 생성될 폼 들의 속성을 변경한다.

4-3 MDI(Multiple Document Interface)

(27)

 코드 프로시저 작성

“파일” 메뉴에서 “선그리기 1 ” 항목을 선택했을 때

4-3 MDI(Multiple Document Interface)

Private Sub mnuLine1_Click()

frmLine1.Show '폼 frmLine1을 보여줌 End Sub

(28)

 코드 프로시저 작성

“파일” 메뉴에서 “선그리기 2 ” 항목을 선택했을 때

4-3 MDI(Multiple Document Interface)

Private Sub mnuLine2_Click()

frmLine2.Show '폼 frmLine2를 보여줌 End Sub

(29)

 코드 프로시저 작성

“파일” 메뉴에서 “Drag & Drop ” 항목을 선택했을 때

4-3 MDI(Multiple Document Interface)

Private Sub mnuDrag_Click()

frmDrag.Show '폼 frmDrag를 보여줌 End Sub

참조

관련 문서

본 연구원에서는 공개채용 서류접수와 관련하여 귀하의 개인정보를 아래와 같이 수집·이용하고자 합니다. 수집된 개인정보는 채용업무

멘토링 과정에서는 많은 어려움이 발생하기 때문에 초지일관 자신 감과참을성을 가지고 끈질기게 멘토링에 참여하는 것이 필요하다. 계획된 멘토링에 진지하고 헌신적으로

그 외 사회 전반에 적용되는 광의의 플랫폼 - 공용플랫폼/ 디자인 플랫폼/ 브랜드 플랫폼 등. 플랫폼은 공용하고 차량의 스타일 등을 결정하는

■ 인접 플랫폼이나 신규 플랫폼을 상시 모니터링 하여 자사의 플랫폼 전략에 반영할 필요 있음. 외부 환경과 기업 상황에 맞는

http://blog.naver.com/op2330

2-x: Constant volume heat addition x-3: Constant pressure heat addition 3-4: Isentropic expansion. 4-5: Constant

그러므로 ㉥ ‘김 선생님’은 현재의 담화 상황에 참여하지 않는 인물을 지칭하는 표현이라는 설명은 적절하다.. 그러므로 ㉤이 아버지가 지금까지 은주와 나눈 대화의 화제

*단어 사이의 공통성과