이벤트 핸들러 로직을 공유하기

풀다운메뉴와 툴바의 메뉴는 형식이 다른 콘트롤이나, 동일한 기능을 하는 다른 콘트롤이다. 즉, 이 콘트롤들의 대표적인 이벤트인 클릭(click)을 통해서 동일한 일을 하게 된다. 이럴 때 클릭에 대한 이벤트를 공유한다. 과거 VB6에서는 콘트롤배열(control arrays)이란 개념으로 수행했으나, 이제는 컨트롤의 이벤트 메소드의 Handles문을 통하여 구현할 수 있다.

다음의 경우는 풀다운메뉴를 클릭했을 때(mnuWaldram.Click)와 툴바메뉴를 클릭했을 때(WaldramToolStripButton.Click)에 대한 이벤트 핸들러를 공유한 것이다.

설정내용을 외부에 저장하기

프로그램의 설정을 다음 번에도 사용하기 위해서는 프로그램 외부에 설정내용을 저장해야 한다. VB2005부터는 My.Settings라는 클래스를 통해서 설정내용을 저장할 수 있다.
프로젝트 디자이너에서 응용 프로그램 설정을 추가하려면
1. 솔루션 탐색기에서 프로젝트를 선택하고 프로젝트 메뉴에서 속성을 클릭합니다.
2. 설정 창을 선택합니다.
3. 설정 표의 빈 행을 클릭합니다.
4. 이름 열에 설정 이름을 입력합니다. 이름에는 공백을 사용할 수 없습니다.
5. 형식 드롭다운 목록에서 설정의 데이터 형식을 선택합니다.
6. 범위 드롭다운 목록에서 설정 범위를 선택합니다. 설정 범위는 응용 프로그램 또는 사용자가 될 수 있습니다.
7. 값 열에 설정의 기본값을 입력합니다. 값은 선택한 데이터 형식에 적합해야 합니다.

문자열 비교를 효과적으로 하기

문자열이 NULL인 경우를 판단해야 할 때가 많다. 특히 파일명을 입력받는 과정에서 아무값도 넘겨주지 않는 경우도 고려해야 한다.
일반적으로 문자열비교는 그 내용을 가지고 하지만, NULL인지 여부를 판단하는 경우에는 문자열의 길이로 판단하는 것이 훨씬 빠르다.

An Object Is a Bundle of Capabilities

Allen Holub says,

An object is defined by what it can do, not by how it does it.

Never ask an object for information that you need to do something; rather, ask the object that has the information to do the work for you.

[solarview’s comment]
객체에게 물어야 하는 것은 어떤 정보를 가졌느냐가 아니라, 오히려 뭘 해달라고 하는 것이다.
객체가 정보도 갖고, 행위도 갖고 있으나, 행위에 관심을 가지라는 뜻이다.
이것은 어쩌면 과거의 동일한 기능을 가진 함수들을 모아서 모듈화를 꿈꾸었던 것과 별반 다르지 않는듯 보이게 한다. (2/9/08)

폼에서 마우스 포인터 모양 바꾸기

오랜 시간이 걸리는 작업을 컴퓨터에게 시킬 경우, 대부분의 프로그램에서는 커서의 모양을 모래시계로 바꾸어 놓는다. 작업이 끝나면 원래의 커서 모양으로 환원시키는 것이 일반적이다.
그럼, 비베닷넷에서 어떻게 커서의 모양을 바꿀까?

폼내의 코드에 아래와 같은 코드를 넣으면 된다.

Twip 과 Pixel

Twip
– 화면 독립적인 단위(screen-independent unit). 모든 화면출력장치에서 화면 요소의 비율을 동일하게 한다.
– 1 twip은 1인치(inch)의 1/1440
– 1 twip = 1/20 pixels

Pixel
– 화면 종속적인 단위(screen-dependent unit)
– ‘picture element’의 약자
–  1
pixel은 화면에 표시되는 가장 작은 그래픽 측정 단위임.
– 1 pixel = 1/72 inch
– 1 pixel = 20 twips

Visual Basic 6.0의 기본 측정 단위는 twips
Visual Basic 2005의 기본 측정 단위는 pixels.

– Twip과 Pixel은 관계는 화면에 따라 다르다. 그래서 Screen.TwipsPerPixelX, Screen.TwipsPerPixelY를 이용해서그 값을 구한다.(VB 6.0)