InputBox 사용하기

 

프로그램을 만들다보면 사용자로부터 데이터를 받아서 처리해야 할 경우가 의외로 많은 것 같다. 그럴 경우 사용자가 선택할 수 있는 것들을 미리 정해놓고 그 가운데 선택하도록 하는 하는 방법과 사용자가 직접 입력하도록 하는 방법이 있는데 오늘은 그 중에서 유용하게 쓸 수 있는 InputBox에 대해서 알아보고자 한다.

함수 정의

Public Function InputBox( _

   ByVal Prompt As String, _

   Optional ByVal Title As String = "", _

   Optional ByVal DefaultResponse As String = "", _

   Optional ByVal Xpos As Integer = -1, _

   Optional ByVal YPos As Integer = -1 _

) As String


만들어 보기


Button
컨트롤 1개를 폼에 배치한다.

실행했을 때(F5를 눌렀을 때)  폼이 뜨면 버튼을 클릭하면 InputBox가 나와서 내가 원하는 것을 입력하면 메시지 박스가 떠서 입력한 내용을 보여주는 간단한 프로그램이다.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

 

        Dim Input As String

 

        Input = InputBox("당신이 지금 원하는 것은?")

        MsgBox("당신이 입력한 것은 : " & Input)

 

End Sub

폼에 버튼 하나를 배치하고 더블 클릭해서 위의 코드를 입력한 후 F5를 누르면 잘 실행되는가요?

비주얼 베이직 6.0 같으면 아무런 문제없이 잘 될 것이다.

하지만 VB2008, vista환경에서는 잘 안되는 것 같다.

발생된 에러

Error     1   'InputBox' is a namespace and cannot be used as an expression.


그래서 웹을 검색해서 찾아보니 아래와 같이 한 줄을 바꿔주면 잘 되었다.

해결

        Input = Interaction.InputBox("당신이 원하는 것은 : ")


여기서 Interaction 모듈은 객체들, 응용프로그램들, 시스템들과의 상호작용을 하기 위해 이용되는 프로스져들을 포함하고 있다.

Posted by 원철연(체르니)
,

변수(Variable)

 

Visual Basic 2008에서 변수선언

Dim
변수명 As 변수자료형

여기서 Dim Dimension의 약자이다.


Dim strCopy As String  ‘strCopy
라는 문자열형 변수선언

선언된 변수에 값 할당하기


strCopy=”
안녕하세요. 여러분!”


변수의 명시적 선언

1. Option explicit

  ‘on’ 상태일 때 선언되지 않은 변수명을 만나면 에러 메시지를 표시

2. Option Infer ->Visual Basic 2008에서 추가된 기능

  Infer option‘on’ 상태이면 초기에 설정된 변수형을 추측하여 해석

  예를 들면
Dim intnumber=100
이라고 변수를 선언, 값을 할당했을 경우

 
Infer option
‘on’ 상태이면 아래와 같이 해석한다.

  Dim intnumber As Integer = 100

 
그러나 만일 Infer option‘off’ 상태이면 object로 저장된다
.
따라서 보다 효율적인 데이터 공간을 이용해서 프로그래밍하고자 할 경우에는
모듈 최상위에

Option Infer On

 
이라고 해주면 Infer 옵션을 사용할 수 있게 되는 것이다.

 하지만 이것보다도 더 좋은 방법은 변수 선언시 정확한 자료형을 정의해서 사용하는 것이
 좋다고 생각한다.

[참고] 프로젝트 IDE에서 설정하는 방법

사용자 삽입 이미지

위에서 Options..를 선택하면 아래와 같은 Options 화면이 나온다.
여기에서 설정을 해주면 된다.
사용자 삽입 이미지

이상으로 변수에 관한 첫번째 내용을 마칩니다.
편안한 밤들 되시길...
Posted by 원철연(체르니)
,

오늘은 MsgBox에 대해서 보다 심도있는 내용을 올려봅니다.
결과를 먼저 볼까요?

사용자 삽입 이미지
폼 1개, Button1, button2, Text1 박스 한 개를 이용해서 만들어 보았습니다.
각각의 Button컨트롤을 누르면 메시지 박스가 뜨도록 처리하였는데요.

먼저 Button1을 누르면
사용자 삽입 이미지
코드는
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim msg, button, title '메시지 박스 인수들에 넣어줄 변수 선언
        msg = "첫번째 테스트입니다. 줄을 바꿔볼까요?" & Chr(10) & "줄이 바뀌었네!!"
        button = vbYesNoCancel + vbInformation
        title = "메시지박스 첫번째 테스트"
        MsgBox(msg, button, title)

End Sub


두번째 버튼을 클릭하면

사용자 삽입 이미지
코드는
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim msg, button, title, response
        msg = "두번째 테스트입니다." & Chr(10) & "프로그래밍 배우기가 쉬운가요?
                   아니면 어려운가요?"
        button = vbYesNo + vbInformation
        title = "메시지박스 두번째 테스트"

        response = MsgBox(msg, button, title) '메시지 박스에서 버튼클릭결과를 받기 위함

        '메시지박스 결과에 따른 후속처리 요청하는 부분
        '이런 식으로 메시지 박스 선택한 것에 따라 DB에 데이터를 저장,삭제,조회 등
        '원하는 작업을 처리할 수 있도록 한다.
        If response = MsgBoxResult.Yes Then
            TextBox1.Text = "프로그래밍 고수가 될 소질이 있으시군요."
        Else
            TextBox1.Text = "열심히 하다보면 고수가 될 수 있을 겁니다."
        End If
End Sub

그냥 봐서는 모르겠지요.
자세히 알아 볼까요?

MsgBox 함수 정의
Public Function MsgBox( _

   ByVal Prompt As Object, _

   Optional ByVal Buttons As MsgBoxStyle = MsgBoxStyle.OKOnly, _

   Optional ByVal Title As Object = Nothing _

) As MsgBoxResult


Buttons 인수에 사용되는 상수

사용자 삽입 이미지
Title 인수는 메시지 박스의 타이틀을 나타냄

MsgBox 결과 상수(vB6.0 과 비교하여)
사용자 삽입 이미지

마지막으로 Chr(10)은 무엇인지 궁금할텐데요. 줄바꾸기를 해주는 겁니다.
그럼 그림으로 이해를 해볼까요?
사용자 삽입 이미지

이해가 되시는지요? 시간나실 때 직접 위와 같은 코드를 입력해 보시고 상수들도 변경해서 해보시고 자신만의 처리루틴을 만들어서 메시지박스 결과에 따라서
후속 작업을 해보도록 하는 것은 어떨까요?
그럼 오늘은 이정도로 마치겠습니다.

Posted by 원철연(체르니)
,

벌써 4번째 시간이군요.

오늘은 유용하게 사용할 수 있는 리스트박스와 콤보박스를 이용해서 제가 작년에
다녀온 우한보기 프로그램을 간단히 만들어 보았습니다.

따라하다보면 기본적인 사용법을 쉽게 익힐 수 있을 겁니다.
그럼 시작해 볼까요?

결과물을 먼저 볼까요?

1. 리스트박스에 선택했을 때 결과

사용자 삽입 이미지

2. 콤보박스에 선택했을 때의 결과
사용자 삽입 이미지

어떤 가요?  너무 쉬운가요?
이제 세부적인 부분을 한 번 알아 봅니다.

사용된 폼 컨트롤 속성정보
사용자 삽입 이미지

자 이제 코드를 입력해 볼까요?

먼저 리스트박스와 콤보박스에 선택할 수 있는 아이템을 등록해야 되겠지요.?
이것은 Form1_Load 이벤트에서 해주면 됩니다.


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        '폼이 로드될 때 리스트박스와 콤보박스 초기화
        '리스트박스에 아이템 정의
        ListBox1.Items.Add("호텔방")
        ListBox1.Items.Add("호텔 앞 전경")
        ListBox1.Items.Add("호텔 옆 전경")
        ListBox1.Items.Add("버스타는 곳")

        '콤보박스에 아이템 정의
        ComboBox1.Items.Add("고금대에서")
        ComboBox1.Items.Add("손문 동상")
        ComboBox1.Items.Add("장강 제 1철교 위에서")
        ComboBox1.Items.Add("황학루")

        '폼의 구분을 위해 폼에 추가했던 Label2, Labe3를 실행시보여주지 않기
        Label2.Visible = False
        Label3.Visible = False

End Sub

다음으로 리스트박스나 콤보박스에서 해당 아이템을 선택하면 픽쳐박스에 보여주도록 하는 부분은 어떻게 하면 될까요?
이것은 ListBox1_SelectedIndexChanged(블라블라), ComboBox1_SelectedIndexChanged(블라블라) 이벤트에서 해주면 됩니다.


- 리스트 박스관련
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged

        '리스트박스에서 선택된 것에 따라서 PictureBox2에 그림을 보여주기
        Select Case ListBox1.SelectedIndex
            Case 0
                PictureBox1.Image = System.Drawing.Image.FromFile _
                  ("E:\티스토리\무료강좌 및 교육\비주얼 베이직2008\강좌 4 리스트박스와 콤보박스
                    \4성호텔부근\호텔방.jpg")
                MsgBox("호텔방을 선택하셨네요. 4성급 호텔인데 좀 후지죠?")
            Case 1
                PictureBox1.Image = System.Drawing.Image.FromFile _
                  ("E:\티스토리\무료강좌 및 교육\비주얼 베이직2008\강좌 4 리스트박스와 콤보박스
                   \4성호텔부근\호텔앞 전경.jpg")
                MsgBox("호텔앞 전경을 선택하셨네요. 호텔 앞이 좀 시골틱합니다.")
            Case 2
                PictureBox1.Image = System.Drawing.Image.FromFile _
                  ("E:\티스토리\무료강좌 및 교육\비주얼 베이직2008\강좌 4 리스트박스와 콤보박스
                    \4성호텔부근\호텔옆 전경.jpg")
                MsgBox("호텔 옆 전경을 선택하셨네요. 호텔방에서 바라본 전경입니다. 여행사의 상술
                             에 속지말자.")
            Case 3
                PictureBox1.Image = System.Drawing.Image.FromFile _
                  ("E:\티스토리\무료강좌 및 교육\비주얼 베이직2008\강좌 4 리스트박스와 콤보박스
                    \4성호텔부근\버스타는 곳.jpg")
                MsgBox("버스타는 곳을 선택하셨군요. 버스비는 1위안, 2위안 2가지 입니다.^^")
        End Select

    End Sub

- 콤보박스관련
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

        '콤보박스에서 선택된 것에 따라서 PictureBox2에 그림을 보여주기
        Select Case ComboBox1.SelectedIndex
            Case 0
                PictureBox2.Image = System.Drawing.Image.FromFile _
                  ("E:\티스토리\무료강좌 및 교육\비주얼 베이직2008\강좌 4 리스트박스와 콤보박스
                    \관광지\고금대에서.jpg")
                MsgBox("고금대에서를 선택하셨네요. 고금대는 우정과 관련된 역사적인 곳임")
            Case 1
                PictureBox2.Image = System.Drawing.Image.FromFile _
                  ("E:\티스토리\무료강좌 및 교육\비주얼 베이직2008\강좌 4 리스트박스와 콤보박스
                    \관광지\손문동상.jpg")
                MsgBox("손문동상을 선택하셨네요.손문은 쑨원이라고도 불리는데 중국의 국부이죠")
            Case 2
                PictureBox2.Image = System.Drawing.Image.FromFile _
                  ("E:\티스토리\무료강좌 및 교육\비주얼 베이직2008\강좌 4 리스트박스와 콤보박스
                    \관광지\장강제1철교위에서.jpg")
                MsgBox("장강제1철교위에서를 선택하셨네요. 1킬로미터가 넘는 긴다리입니다.")
            Case 3
                PictureBox2.Image = System.Drawing.Image.FromFile _
                  ("E:\티스토리\무료강좌 및 교육\비주얼 베이직2008\강좌 4 리스트박스와 콤보박스
                    \관광지\황학루.jpg")
                MsgBox("황학루를 선택하셨네요. 황학루, 후베이박물관과 함께 우한의 대표적인 명소지
                              요")
        End Select
End Sub

마지막으로 버튼 컨트롤에서 MsqBox의 조금더 발전된 기능을 넣은 부분
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        MsgBox("본 프로그램이 유용하셨는지요? 유용하셨으면 격려차원에서 댓글도 남겨주시면 감사
                      하겠습니다.", MsgBoxStyle.YesNo)

        '프로그램 끝내기
        End
End Sub

이부분 출력 결과를 보면

사용자 삽입 이미지

이상으로 오늘의 강좌를 마칩니다.
열심히 하나 하나 익히셔서 좋은 프로그램 많이 만들어주세요.

참고로 Form1.vb 파일을 첨부합니다. 참고하세요.^^;;


궁금하신 사항이 있으시면 댓글이나 이메일로 문의를 주세요. 그럼 이만 마칩니다.

Posted by 원철연(체르니)
,
오늘은 폼 디자인하는 법에 대해서 간략하게 다뤄볼까 합니다.

먼저 새로운 프로젝트를 엽니다.
사용자 삽입 이미지















프로젝트명을 MyShopping으로 생성합니다.
생성된 프로젝트에서 Form1.vb를 클릭하여 컨트롤들을 배치합니다.

먼저 폼에 배치한 컨트롤들의 속성들을 다음과 같습니다.
사용자 삽입 이미지

















그러면 배치한 그림을 볼까요?
사용자 삽입 이미지























위 그림에서 폼에 어떻게 그림을 넣었을까 궁금하시진 않은가요? BackGroundImage에서
원하는 그림을 선택해주면 적용이 됩니다.
자신이 직접 포토샾같은 디자인툴로 배경 이미지를 만들어 폼 바탕으로 해서 프로그램을
만들면 괜찮겠죠^^;;

(바탕그림은 d&shop을 캡쳐해서 수정해서 사용했습니다. 혹시라도 문제가 있으시면
 제게 댓글이나 이메일(cywon11@empal.com)으로 주시면 삭제토록 하겠습니다.)

다음으로  GroupBox1, GroupBox2의 바탕을 투명하게 만들어 보겠습니다.
GroupBox의 속성상자에서 변경해주면 되는데요. 아래와 같이 하시면 됩니다.

사용자 삽입 이미지


























Web 탭에서 Transparent(투명한)을 선택해주면 됩니다. 쉽지요?
이렇게 해서 최종적으로 간단하게 만들어 본 화면은 아래와 같습니다.
사용자 삽입 이미지


이상으로 간략하게 폼 디자인을 알아봤습니다.
ListBox와 ComboBox는 BackColor를 투명하게 하는 기능을 지원하지 않고 Button컨트롤은 지원되는데 제가 실력이 달려서 찾지를 못했습니다. 혹시 아시는 분은 댓글 남겨주시면 감사하겠습니다. 그럼 오늘은 이만하지요.
Posted by 원철연(체르니)
,

오늘의 학습내용

1. Label, Button, CheckBox, PictureBox, Group 컨트롤 사용
2. CheckBox
가 선택될 때마다 이미지 보여주고 감추기 기능 배우기
3.
조건문, Form Load시 초기화 해주기


학습순서
1. 새로운 프로젝트를 생성

2. 필요한 컨트롤들을 폼에 배치한다.

3. 각 컨트롤들의 속성 및 폼의 초기화 진행

4. 실행해본다.

 
1. 새로운 프로젝트를 생성

사용자 삽입 이미지















2.
필요한 컨트롤들을 폼에 배치한다.


사용자 삽입 이미지
























3.
각 컨트롤들의 속성 및 폼의 초기화 진행

CheckBox1 관련
    Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As
    System.EventArgs) Handles CheckBox1.CheckedChanged

   '체크박스1이 체크된 상태이면 픽쳐박스1을 화면에 보여주고 그렇지 않으면 보이지
        않게 하라는 조건문

        If CheckBox1.Checked = True Then
            PictureBox1.Image = System.Drawing.Image.FromFile("E:\컴퓨터\Visual Basic
            NET\2008\티스토리에 올릴 강좌\강좌 2\황학루.jpg")
            PictureBox1.Visible = True
        Else
            PictureBox1.Visible = False
        End If
   
End Sub

CheckBox2 관련
    Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As
    System.EventArgs) Handles CheckBox1.CheckedChanged

   '체크박스2이 체크된 상태이면 픽쳐박스2을 화면에 보여주고 그렇지 않으면 보이지
        않게 하라는 조건문

        If CheckBox2.Checked = True Then
            PictureBox2.Image = System.Drawing.Image.FromFile("E:\컴퓨터\Visual Basic
            NET\2008\티스토리에 올릴 강좌\강좌 2\하늘위에서.jpg")
            PictureBox2.Visible = True
        Else
            PictureBox2.Visible = False
        End If
   
End Sub

    PictureBox1, PictureBox2 관련
    PicutreBox1.Image 속성에 PictureBox1에 표시할 이미지를 선택해주고
    PicutreBox1.SizeMode는 StretchImage로 해준다.

    Form1 관련
     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
     System.EventArgs) Handles MyBase.Load

 
       '폼을 로드할 때 초기화해 줌
        CheckBox1.Checked = True
        CheckBox2.Checked = False

        PictureBox1.Visible = True
        PictureBox2.Visible = True
    End Sub


4. 실행해본다.

사용자 삽입 이미지























[참고] 샘플파일

invalid-file

샘플파일


이상으로 2번째 시간을 마칩니다. 참고로 올린 샘플 프로그램에서
사용된 이미지들은 다른 것으로 변경하여 적용해 보시면 될 듯 합니다.

Posted by 원철연(체르니)
,