반응형

안뇽하세요~ 무꼬입니다.


오늘은 리스트 박스와 콤보 박스에대해 설명해드릴게요~!





리스트 박스나 콤보박스는 모양만 다르지 자신들이 가지고 있는 속성이 같아요!


사용자에게 어떻게 보여주고 싶은지에 따라 입맛대로 사용하시면 됩니다~



리스트박스는 말그대로 리스트를 보여주는 박스이구요


콤보박스는 ▼ 모양을 눌렀을때 거기서 카데고리를 고를 수 있게 되어 있는게 콤보박스에요


그럼 둘다 성질이 비슷하니까 리스트 박스로 간단히 설명 드릴게요!


우선 리스트 박스 혹은 콤보박스에 아이템을 추가하는 방법입니다.


커맨드 버튼을 하나 추가해서 그 커맨드 버튼이 눌러지면


리스트가 추가 되는 코딩을 해볼게요



이렇게 하면 커맨드 박스를 누를때마다 "리스트 추가!" 라는 아이템이 계속 생성되는걸 보실수 있으세요



세 번 눌렀습니다.



자, 그럼 이번에는

만약에 사용자가 리스트들 중 3번째 리스트를 눌렀을때 메세지 박스를 띄우는걸 해볼게요.


간단합니다.


ListIndex 속성이 뭐냐면

사용자가 현재 리스트중에 선택한 리스트의 순번을 나타냅니다.


다만 순번이

1부터 2,3,4,5...이렇게 나가지 않고,

0부터 숫자를 세어나가죠.


그럼 첫번째 리스트의 ListIndex는 0번이라는 말이겠죠?


그래서 List1_Click 서브에 있는 IF문을 보시면

If List1.ListIndex = 2 then

여기에 3이 아니라 2를 넣은 이유도


3번째가 되려면 0,1,2 이렇게 해서 2번이 실질적으로 3번째가 되는 것이죠


실험을 직접해보면

우선 커맨드 버튼으로 3번 이상 눌러줘서 3개 이상 아이템을 생성해주고,


리스트에서 3번째 것을 클릭하면


메세지가 짜잔~ 하고 뜨죠



자 그럼 이번에는 리스트를 클릭했을때

그 리스트에 있는 텍스트를 메세지 박스로 띄워보는 것을 만들어 볼게요!



List 역시 현재 선택된 아이템의 문자열을 Text로 인식합니다.


그렇다면 현재 선택된 아이템의 문자열을 받아 들이려면

List1.Text 를 사용하면 되겠죠?


이렇게! 됩니다.


그럼 리스트 박스의 내용을 전부 지우려면 어떻게 할까요?


List1.Clear

이 명령어를 쓰시면 깔끔하게 리스트가 초기화됩니다.




그럼 이번에도 문제를 내볼게요~


폼이 로드 되었을때


List 에


이름: 홍길동

전화번호: 010-1234-5678

나이: 30

주소; 서울시 강남구 논현동


한줄씩 아이템이 추가 되게 해보세요!


그 후에 리스트를 클릭하면

그 해당 텍스트가 메세지 박스로 뜨게!




오늘은 해답을 아래에 실어 둘게요!




해답입니다!



자, 그럼 이번에는

텍스트박스를 하나 더 만들어서

커맨드 버튼을 클릭하면

해당 텍스트 박스의 내용이 리스트에 추가되고,

그와 동시에 텍스트 박스의 내용은 빈공간이 되게 만들어 봅시다~



이렇게 말이죠!





이것도 두 줄이면 끝나네요



이게 완성 되셨다면

이번에는 콤보박스로 연계 해볼게요.

콤보박스와 커맨드 버튼을 하나더 추가 해서 아래와 같이 배치해보세요




오늘의 진짜 문제입니다!


텍스트 박스로 입력해서 추가한 리스트들 중에


원하는 내용을 콤보에 추가 버튼을 누르면 콤보박스에 선택된 리스트의 텍스트가

콤보에 추가 되게 만들어보세요!


이렇게요


이렇게 텍스트를 입력해서 리스트에 추가시키고,


리스트중에 아무거나 선택 후에,

'콤보에 추가' 버튼을 누르면


아래 콤보에 추가가 되게요!


힌트는 List와 Combo는 속성이 같습니다!


궁금한게 있다면 댓글로~~



반응형
반응형

오늘은 변수의 심층 이해를 돕는 강좌를 시작하겠습니다.


변수에는 전역변수(Global)와 지역변수(Local)가 있습니다.


사전적의미로 단어로만 보시면


Global 글로벌~ 세계적인; 지구의, 전반적인

Local 로컬~ 지역의


자, 그럼 지역안에서만 쓰는 변수가 지역변수고,

지역과 지역간에도 모두 소통되는 변수가 전역변수라는걸 대강 감이 오시죠?


그렇다면, 지역 변수와

전역변수는 어떻게 규정 되느냐.


비주얼 베이직내에서는

각각의 서브가 있죠?


이 서브들을 하나의 마을이라고 생각해보세요.

그럼 각각

Command1_Click 이란 마을

Command2_Click 이라는 마을

form_Load 라는 마을

Label1_Click 이라는 마을


하지만 이 비주얼베이직 세상에서는 사람이 아니라 '변수'라는 동물이 살고 있어요.

그 마을들 중에

Command1_Click 이라는 마을에

각각 이름 아래와 같은 이름을 가진 변수가 태어났어요 (변수 선언)

Dim Temp_Str As String

Dim Temp_Int As Integer



각각 변수 이름과 각각 개개인이 해야될 역할을 전부 입력해주었죠?


그럼 이 변수라는 동물들이 활동을 하기 시작합니다~!

그런데 변수라는 녀석들은 멍청해서 마을 밖으로 절대 나가려고 하질 않아요.

그러다보니

다른 마을에서는 Temp_Str이라는 녀석과 Temp_Int라는 녀석의 존재를 절대 모르죠.

오로지 Command1_Click 이라는 마을에서만 이 두녀석의 존재를 안다는 것이죠.


이게 바로 지역 변수입니다.


다른 마을에서 관여를 할 수도 없고, 다른 마을로 이전 할 수도 없는 녀석이 지역변수!

오로지 그 마을(Sub)에서만 쓰이고,

그 마을(Sub)가 종료 되면 같이 산화 되어버리죠(값 초기화).


그러면 코딩으로 설명 하면 어떻게 될지 볼까요?



그럼 해당 폼을 실행을 해보면?


우선 Command1 (A확인)을 누르면



Dim Temp_Str As String

Dim Temp_Int As Integer

Temp_Str = "안녕하세요 저는 지역변수입니다."

Temp_Int = "1234"

이녀석들이 실행 되겠죠?

그럼 변수도 선언되었고, 각 변수에 값도 들어가있는 상황입니다.


그다음에 Command2 (B확인)을 누르면


 Label1.Caption = Temp_Str

이 명령이 실행 되겠죠?


그러면, 예상되는 값은

label1의 Caption 값이 "안녕하세요 저는 지역변수입니다." 가 나와야 겠죠?


하지만 결과는 아무것도 없는 ""가 뜹니다. 비어있는게 뜨죠.



이유는 아까 말씀드렸다 시피,


서브안에서 선언이 된 변수는 서브가 종료되면('End Sub') 산화되어 없어집니다.

다른 서브에서 관여 할 수가 없는거죠.




한번더 보강해서 설명을 하자면

상위 계층에서 선언된 변수는 그 하위 계층에서도 사용이 가능합니다.(물론 서브가 종료되기 전까지.)

Form1에서 선언된 지역변수는 Form2에서는 사용이 불가능합니다.

즉, 같은 계층을 포함한 하위 계층에서 선언된 변수는 다른데에서 사용을 할 수 없습니다.


어렵나요?


그럼 마을을 예로 설명드리면


나라에서 만든 법은 각각 도, 시, 마을들에게 전파되어 법으로 인정받고 사용이 가능하지요?

그럼 '도'안에서 만들어진 법은 '시', '동', 마을에 전파되어 사용을 할 수 있습니다.

그럼 마을에서 만들어진 법은 나라 전체에 통용이 될까요?

안되죠.

우물 안에서만 쓰는 법(변수)라는 말입니다.


전체적으로 통용이 되려면 전역변수로 선언을 하든지,

아니면 최상위 계층에서 선언을 하게되면 모든 서브에서 사용이 가능하게 됩니다!


이해 하셨나요?


자, 그럼 한번에 전역 변수와 지역변수에 대해 설명을 드렸죠?


그럼 위 코딩에서 제대로된 코딩을 하려면 폼자체가 Command1과 Command2보다 높은 상위계층이니까

아래 처럼 코딩을 하면 제대로 되겠죠



한번 테스트 해보세요~!


그리고 이번 강의에서는 문제를 하나 내겠습니다.


아, 그전에

'Msgbox' 라는 함수가 있는데,

간단하게 이번강의에서 사용방법만 설명하자면


Msgbox ("메세지내용입력")

이렇게 입력하시고 실행해보시면


폼이 로드될때 메세지창이 이렇게 뜹니다.


물론 Command1_Click 서브에 넣게 되면

커맨드버튼1을 클릭했을때 위 메세지가 뜨겠지요?


그럼 문제입니다.



텍스트 박스를 하나와

커맨드 버튼 하나를 만드세요


그 다음에 텍스트 박스에 숫자를 입력하고 커맨드 버튼을 누르면

메세지박스에 해당 텍스트 박스에 입력되었던 문자열이 출력되게 해보세요!

반응형

+ Recent posts