검색결과 리스트
VB 에 해당되는 글 6건
- 2009.06.18 vb6 에서 단축키로 리마크(remark, 주석) 기능 사용하기
- 2009.06.18 Visual Studio 2005 스크립트 탐색기 이용하기
- 2009.05.13 win API
- 2008.12.22 [VB 6.0] 구조체 선언을 해보자
- 2008.11.04 주소록 만들기(viewlist)
- 2008.11.04 with 사용법
VB 6.0에서 단축키로 리마크 하기
version 1.0
2004년 8월 6일 신주섭
http://www.linuxnara.org
joosub@linuxnara.org
예전 부터 알고 있는 꽁수였는데 지금에야 문서로 정리 하게 됩니다. 귀차니즘에 빠져서 정리 한다 한다 해놓고 상당한 시간이
흘렀네요.. ㅋㅋ
그럼 지금부터 vb툴의 강력한 툴바 기능에 대해서 ^^); 설명해 드리도록 하겠습니다. (툴바에 대한 부분도 약간 들어 있으니깐요 ^^;)
vb툴바에서 오른쪽 마우스를 클릭하게 되면 위와 같은 메뉴가 나오는데 그곳에서 사용자 정의
메뉴를 클릭합니다.
클릭하게 되면 아래와 같은 화면이 나오면서 툴바를 사용자가 정의 할 수 있게끔 대화
상자가 뜨게 됩니다. 그곳에서 이제부터 툴바를 재정의 해야 합니다.
툴바를 재정의 하기 위해서 "새 도구 모음(N)" 을 클릭하고 원하는 새 도구 모음의 이름을 입력
합니다.
새로운 도구 모음의 이름을 정의 한 후 '확인' 버튼을 눌러 다음으로 진행합니다.
'확인' 버튼을 누른 후 명령 탭에 가서 '편집' 메뉴의 '주석 블록 설정' 과 '주석 블록 해제' 를 드래그 해서 새로
생성한 툴바에 드래그 합니다.
정상적으로 드래그 했다면 아래와 같은 툴바가 만들어지게 됩니다.
다음으로 이 부분에서 가장 주의랄꺼까지는 없지만 중요한 부분입니다. ^^;
툴바에서 아이콘에 마우스를 대고 오른쪽 마우스 버튼을 누르게 되면 위와 같은 화면의 팝업 메뉴가 나타 납니다.
이 팝업 메뉴에서 '이름(N)'을 보게 되면 '주석 블록 설정' 이라고 처음에 정의 되어 있는데 이 부분을 수정하여 위와
같은 화면으로 만들어 줍니다.
주석 블럭 해제도 마찬가지 겠죠..
다른 단축키로 정의하고 싶으신 분은 다른 것으로 하도 됩니다.
단 VB의 메뉴바에 있는 단축키와 충될이 되지 않는 것으로 설정 해야 합니다. 안그럼 메뉴가 우선순위를 가지고 있어서
단축키가 제대로 작동하지 않습니다.
해당 아이콘에서 다시 오른쪽 키를 누른 후 '이미지와 문자열(A)' 부분을 클릭합니다.
이 것을 선택하지 않으면 단축키가 안먹습니다. -_-); 저도 왜 그런지는 ;;; 그런데 이렇게 선택을 해주면 단축키를
쓸 수 있습니다.
다른 아이콘도 이와 같은 설정 방법 대로 '이미지와 문자열(A)' 로 선택을 해주고 설정한 툴바를 아래 화면처럼 툴바의 다른곳에
도킹 하시면 됩니다.
화면과 같이 막 편집하다가 ALT + K 키를 누르면 리마크가 되고 ALT+L 키를 누르면 리마크가 사라집니다.
출처 : 데브피아 http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=48&MAEULNO=19&no=2995
디버그>프로세스에 연결(원하는 프로세스 연결)
>스크립트 탐색기가 연결 안되어 있으면>디버그>창>스크립트 탐색기 클릭
각각 다른 프로젝트 간에 폼과 모듈 또는 폼과 폼 사이에서는 일정한 데이터 타입이 필요하다.
이때 구조체란 것을 사용하게 되는데 프로젝트안에 모듈로 선언하거나 DLL로 컴파일하여
프로젝트 참조를 하면 된다.
public type aaa
첫번째내용 as String
두번째내용 as String
end type
public bbb as aaa
str=bbb.첫번째내용
Option Explicit
Public i As Integer
Public gsSaveFileName As String
Private Sub Command1_Click() '추가 클릭시 이벤트
Form2.Show
Form2.Caption = "정보 추가"
End Sub
Private Sub Command4_Click() 'listview 초기화
Dim a(), b(), c(), d(), e(), f() As String
For i = 1 To ListView1.ListItems.Count
ListView1.ListItems(i).SubItems(1) = ""
ListView1.ListItems(i).SubItems(2) = ""
ListView1.ListItems(i).SubItems(3) = ""
ListView1.ListItems(i).SubItems(4) = ""
ListView1.ListItems(i).SubItems(5) = ""
ListView1.ListItems(i).SubItems(6) = ""
Next i
End Sub
Private Sub Command5_Click() '선택삭제
ListView1.ListItems.Remove ListView1.SelectedItem.Index
End Sub
Private Sub Command6_Click() '정보수정 form2로 이동
Form2.Show
Form2.Caption = "정보 수정"
End Sub
Private Sub ListView1_LostFocus()
' 컨트롤이 포커스를 잃은 후 각 ListItem의 선택된
' 속성을 False로 다시 설정합니다.
Dim i As Integer
For i = 1 To ListView1.ListItems.Count
ListView1.ListItems.Item(i).Selected = False
Next i
End Sub
Private Sub Command7_Click()
Dim j, i As Integer
Dim itmFound As ListItem
Call ListView1_LostFocus
For j = 1 To 6
For i = 1 To ListView1.ListItems.Count
If ListView1.ListItems(i).SubItems(j) = Text1.Text Then
Set itmFound = ListView1.FindItem(i)
itmFound.EnsureVisible '찾는행으로 스크롤 옮김.
itmFound.Selected = True
ListView1.SetFocus '포커스를 줌
End If
Next i
Next j
If itmFound Is Nothing Then ' 찾는거 없다 -> 알려주고 끝냄.
MsgBox "일치하는 정보가 없습니다."
Text1.SetFocus
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
Exit Sub
End If
' Dim strFindMe As String
' Dim itmFound As ListItem ' FoundItem 변수.
'
' Call ListView1_LostFocus
'
'
' Set itmFound = ListView1.FindItem(Text1.Text, lvwSubItem, , lvwPartial)
' 'lvwSubItem 자리에 들어갈 수 있는거는
' 'lvwSubItem 또는 lvwText 또는 lvwTag 가 있음. MSDN 참고
' '마지막자리에 lvwPartial : Like % 검색...첫 번에 나온거에 멈춤.
' 'lvwWholeWord : 정확하게 맞는거 검색.
'
' If itmFound Is Nothing Then ' 찾는거 없다 -> 알려주고 끝냄.
' MsgBox "일치하는 정보가 없습니다."
' Exit Sub
'
' Else
' itmFound.EnsureVisible '찾는행으로 스크롤 옮김.
' itmFound.Selected = True ' 찾은행을 선택함.
' ListView1.SetFocus '포커스를 줌
' End If
End Sub
Private Sub Form_Load() '컬럼 정의
Dim COL(6) As ColumnHeader
Set COL(0) = ListView1.ColumnHeaders.Add(, , " ", 0)
Set COL(1) = ListView1.ColumnHeaders.Add(, , "학번", 1000)
Set COL(2) = ListView1.ColumnHeaders.Add(, , "성명", 1000)
Set COL(3) = ListView1.ColumnHeaders.Add(, , "영어", 700)
Set COL(4) = ListView1.ColumnHeaders.Add(, , "국어", 700)
Set COL(5) = ListView1.ColumnHeaders.Add(, , "수학", 700)
Set COL(6) = ListView1.ColumnHeaders.Add(, , "평균", 700)
End Sub
Private Sub Command2_Click()
'커먼다이얼로그에 지정된 경로로 입시정보목록을 저장하는 소스
On Error Resume Next
Dim a(), b(), c(), d(), e(), f() As String
com.Filter = "텍스트파일 (*.txt)|*.txt"
com.ShowSave
For i = 1 To ListView1.ListItems.Count
ReDim Preserve a(i), b(i), c(i), d(i), e(i), f(i)
'변수 a(i)와 b(i), c(i), d(i), e(i)를 선언함.
a(i) = ListView1.ListItems(i).SubItems(1)
b(i) = ListView1.ListItems(i).SubItems(2)
c(i) = ListView1.ListItems(i).SubItems(3)
d(i) = ListView1.ListItems(i).SubItems(4)
e(i) = ListView1.ListItems(i).SubItems(5)
f(i) = ListView1.ListItems(i).SubItems(6)
Next i
' 리스트뷰에 입력되어 있는 내용을 각각 변수 a(i)와 b(i), c(i), d(i), e(i)에 대입 시킴.
Open com.filename For Output As 1
For i = 1 To ListView1.ListItems.Count
Write #1, a(i), b(i), c(i), d(i), e(i), f(i)
Next i
Close #1
' 위의 경로에 변수 a(i)와 b(i), c(i), d(i), e(i)에 대입된 내용을 저장함.
End Sub
Private Sub Command3_Click()
''커먼다이얼로그에 지정된 경로에서 입시정보목록을 불러오는 소스
On Error GoTo er
Dim itm As ListItem ' 변수 itm을 ListItem형으로 선언함.
Dim a, b, c, d, e, f As String
com.Filter = "텍스트파일 (*.txt)|*.txt"
com.ShowOpen
ListView1.ListItems.Clear
Open com.filename For Input As #1
Do Until EOF(1) ' 위의 경로에 있는 내용을
Input #1, a, b, c, d, e, f ' 변수 a와b, c, d, e 에 대입해서
Set itm = ListView1.ListItems.Add()
itm.SubItems(1) = a
itm.SubItems(2) = b
itm.SubItems(3) = c
itm.SubItems(4) = d
itm.SubItems(5) = e
itm.SubItems(6) = f
Loop ' ListView1에 입력함.
Close #1
For i = 1 To ListView1.ListItems.Count
Set itm = ListView1.ListItems(i)
itm.Text = i
Next i
Me.Caption = Left(com.FileTitle, Len(com.FileTitle) - 4)
Exit Sub
er:
End Sub
Private Sub ListView1_DblClick() 'listview 더블클릭시 수정
Command6_Click
End Sub
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader) '컬럼정렬
If ListView1.SortOrder = 0 Then
ListView1.SortOrder = 1
ListView1.SortKey = ColumnHeader.Index - 1
Else
ListView1.SortOrder = 0
End If
ListView1.Sorted = True
End Sub
Private Sub openExcel_Click()
Dim objExcel As Excel.Application
Dim ObjWorksheet As Excel.Worksheet
Dim xlWorkbook As Excel.Workbook
Dim filename As String
Dim i As Integer
Dim itm As ListItem
ListView1.ListItems.Clear
com.CancelError = True
com.Flags = cdlOFNHideReadOnly
com.Filter = "Excel Files (*.xls)|*.xls"
com.FilterIndex = 2
com.ShowOpen
filename = com.filename
Set objExcel = CreateObject("Excel.Application")
Set xlWorkbook = objExcel.Workbooks.Open(filename, ReadOnly:=True)
Set ObjWorksheet = xlWorkbook.Worksheets("성적")
objExcel.Visible = False
i = 1
Do While Not ObjWorksheet.Cells(i + 1, 1) = ""
Set itm = ListView1.ListItems.Add()
itm.SubItems(1) = ObjWorksheet.Cells(i + 1, 1)
itm.SubItems(2) = ObjWorksheet.Cells(i + 1, 2)
itm.SubItems(3) = ObjWorksheet.Cells(i + 1, 3)
itm.SubItems(4) = ObjWorksheet.Cells(i + 1, 4)
itm.SubItems(5) = ObjWorksheet.Cells(i + 1, 5)
itm.SubItems(6) = ObjWorksheet.Cells(i + 1, 6)
i = i + 1
Loop
Me.Caption = Left(com.FileTitle, Len(com.FileTitle) - 4)
Set objExcel = Nothing
Set ObjWorksheet = Nothing
Set xlWorkbook = Nothing
End Sub
Private Sub saveExcel_Click() '엑셀 저장
On Error GoTo er
Dim objExcel As Excel.Application
Dim objWorkbook As Excel.Workbook
Dim ObjWorksheet As Excel.Worksheet
Dim idx As Integer
Dim filename As String
com.CancelError = True
'플래그를 설정합니다.(읽기전용)
com.Flags = cdlOFNHideReadOnly
'필터를 설정합니다.
com.Filter = "Excel Files (*.xls)|*.xls"
'기본 필터를 지정합니다.
com.FilterIndex = 2
'[다른 이름으로 저장] 대화 상자를 표시합니다.
com.ShowSave
'선택된 파일 이름을 표시합니다.
filename = com.filename
Set objExcel = CreateObject("excel.application")
objExcel.Visible = False
Set objWorkbook = objExcel.Workbooks.Add
objExcel.DisplayAlerts = False
Do While objWorkbook.Worksheets.Count > 1
Set ObjWorksheet = objWorkbook.Worksheets.Item(objWorkbook.Worksheets.Count)
ObjWorksheet.Delete
Loop
objWorkbook.Worksheets("sheet1").Activate
Set ObjWorksheet = objWorkbook.ActiveSheet
ObjWorksheet.Name = "성적"
idx = 1
'제목달기
ObjWorksheet.Cells(idx, 1) = "학번"
ObjWorksheet.Cells(idx, 2) = "성명"
ObjWorksheet.Cells(idx, 3) = "영어"
ObjWorksheet.Cells(idx, 4) = "국어"
ObjWorksheet.Cells(idx, 5) = "수학"
ObjWorksheet.Cells(idx, 6) = "평균"
'칼럼포맷 설정
ObjWorksheet.Rows(idx).Font.Bold = True
ObjWorksheet.Rows(idx).HorizontalAlignment = 3
idx = idx + 1
ObjWorksheet.Cells.ColumnWidth = 12
'셀에 데이터 쓰기
For idx = idx To ListView1.ListItems.Count
ObjWorksheet.Cells(idx, 1) = ListView1.ListItems(idx - 1).SubItems(1)
ObjWorksheet.Cells(idx, 2) = ListView1.ListItems(idx - 1).SubItems(2)
ObjWorksheet.Cells(idx, 3) = ListView1.ListItems(idx - 1).SubItems(3)
ObjWorksheet.Cells(idx, 4) = ListView1.ListItems(idx - 1).SubItems(4)
ObjWorksheet.Cells(idx, 5) = ListView1.ListItems(idx - 1).SubItems(5)
ObjWorksheet.Cells(idx, 6) = ListView1.ListItems(idx - 1).SubItems(6)
Next idx
objExcel.ActiveWorkbook.SaveAs filename
objExcel.ActiveWorkbook.Close
Exit Sub
er:
End Sub
Private Sub search_Click()
Form4.Show
Form4.Caption = "검색"
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then Command7.Value = True
End Sub
===========================================================================================================
[form2]
Option Explicit
Public i As Integer
Private Sub text1_gotfocus() '텍스트 창에 커서 위치시에 글자길이만큼 블럭화
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End Sub
Private Sub text2_gotfocus()
Text2.SelStart = 0
Text2.SelLength = Len(Text2.Text)
End Sub
Private Sub text3_gotfocus()
Text3.SelStart = 0
Text3.SelLength = Len(Text3.Text)
End Sub
Private Sub text4_gotfocus()
Text4.SelStart = 0
Text4.SelLength = Len(Text4.Text)
End Sub
Private Sub text5_gotfocus()
Text5.SelStart = 0
Text5.SelLength = Len(Text5.Text)
End Sub
Private Sub Command1_Click() '등록, 수정
Dim itm As ListItem
If Command1.Caption = "등록" Then
Set itm = Form1.ListView1.ListItems.Add()
itm.SubItems(1) = Text1
itm.SubItems(2) = Text2
itm.SubItems(3) = Text3
itm.SubItems(4) = Text4
itm.SubItems(5) = Text5
itm.SubItems(6) = (Val(Text3.Text) + Val(Text4.Text) + Val(Text5.Text)) / 3
Else
Set itm = Form1.ListView1.ListItems.Add()
itm.SubItems(1) = Text1
itm.SubItems(2) = Text2
itm.SubItems(3) = Text3
itm.SubItems(4) = Text4
itm.SubItems(5) = Text5
itm.SubItems(6) = (Val(Text3.Text) + Val(Text4.Text) + Val(Text5.Text)) / 3
Form1.ListView1.ListItems.Remove Form1.ListView1.SelectedItem.Index
End If
For i = 1 To Form1.ListView1.ListItems.Count
Set itm = Form1.ListView1.ListItems(i)
itm.Text = i
Next i
Unload Me
End Sub
Private Sub Command2_Click() '취소->창닫기
Unload Me
End Sub
Private Sub Command3_Click() '초기화
Text1 = ""
Text2 = ""
Text3 = ""
Text4 = ""
Text5 = ""
End Sub
Private Sub Form_Activate() 'form1에서 form2창 오픈시에 정보추가 caption이면 버튼caption을 등록으로
If Me.Caption = "정보 추가" Then
Command1.Caption = "등록"
Else
Command1.Caption = "수정"
'수정할 입시정보 내용을 표시함
Text1 = Form1.ListView1.SelectedItem.SubItems(1)
Text2 = Form1.ListView1.SelectedItem.SubItems(2)
Text3 = Form1.ListView1.SelectedItem.SubItems(3)
Text4 = Form1.ListView1.SelectedItem.SubItems(4)
Text5 = Form1.ListView1.SelectedItem.SubItems(5)
End If
End Sub
===================================================================================================
[form4]
Option Explicit
Private Sub ListView1_LostFocus()
' 컨트롤이 포커스를 잃은 후 각 ListItem의 선택된
' 속성을 False로 다시 설정합니다.
Dim i As Integer
For i = 1 To Form1.ListView1.ListItems.Count
Form1.ListView1.ListItems.Item(i).Selected = False
Next i
End Sub
Private Sub Command1_Click()
Dim strFindMe As String
Dim itmFound As ListItem ' FoundItem 변수.
Call ListView1_LostFocus
Set itmFound = Form1.ListView1.FindItem(Text1.Text, lvwSubItem, , lvwPartial)
'lvwSubItem 자리에 들어갈 수 있는거는
'lvwSubItem 또는 lvwText 또는 lvwTag 가 있음. MSDN 참고
'마지막자리에 lvwPartial : Like % 검색...첫 번에 나온거에 멈춤.
'lvwWholeWord : 정확하게 맞는거 검색.
If itmFound Is Nothing Then ' 찾는거 없다 -> 알려주고 끝냄.
MsgBox "일치하는 정보가 없습니다."
Text1.SetFocus
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
Exit Sub
Else
itmFound.EnsureVisible '찾는행으로 스크롤 옮김.
itmFound.Selected = True ' 찾은행을 선택함.
Form1.ListView1.SetFocus '포커스를 줌
End If
Unload Me
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then Command1.Value = True
End Sub
개체에서 여러 작업 수행
한 개체에서 여러 작업을 수행해야 하는 경우가 있습니다. 예를 들어 한 개체에 여러 속성을 설정해야 하는 경우입니다. 이와 같은 경우 필요한 수만큼 문을 사용합니다.
Private Sub Form_Load() Command1.Caption = "
확인
" Command1.Visible = True Command1.Top = 200 Command1.Left = 5000 Command1.Enabled = True End Sub
모든 문에서 같은 개체 변수 Command1을 사용한다는 것에 주목하기 바랍니다. With...End With 문을 사용하면 이 코드를 읽고 쓰기 쉬울 뿐만 아니라 더욱 효과적으로 실행할 수 있습니다.
Private Sub Form_Load() With Command1 .Caption = "
확인
" .Visible = True .Top = 200 .Left = 5000 .Enabled = True End With End Sub
With...End With 문을 With...End With 내에 포함시켜 중첩된 With 문을 만들 수도 있습니다.