본문 바로가기

데스크탑/비주얼 베이직 610

run-time error '380' invalid property value 프로그램 개발 중 ComboBox 돌리다가 Run-time error '380' Invalid property value 라는 에러를 접하게 되었는데요. 디버깅해보니 DB에서 값을 읽어와 ComboBox 에 넣어주고 마지막에 ListIndex를 0으로 잡아주는 곳에서 멈추더군요. 예전에도 이런 일이 있었는데 왜 그런지를 몰랐는데 이번에 이유를 찾았습니다. 근데.. 그 이유가 너무 간단하더군요 ㅡㅡ;; 그 이유는 ComboBox에 아무 값도 들어가지 않았기 때문에 ListIndex로 초기 Index를 잡아줄때 인식을 못하는 것이었습니다. 이런 낭패가;;; 혹시나 저같이 몰라서 헤매시는 분이 있으시면(없으시겠지만..) 참고하세요~ 2013. 3. 25.
Form_Resize 이벤트 사용하여 Form 의 컨트롤 위치 조정하기. 최근 나오는 왠만한 개발 툴이나 Visual Studio .NET 에서는 Form 의 control 들의 위치가 동적으로 바뀔수 있도록 지원이 됩니다. 예를 들어 한 폼에 버튼이나 메시지박스같은 컨트롤들이 있을 때 폼의 크기를 사용자가 임의로 늘리거나 줄일 수 있는데 이때 컨트롤들도 폼 크기에 맞춰서 움직이는 경우죠. Visual Basic 6 에서는 따로 이런 기능들을 제공해 주지는 않지만 Form_Resize 이벤트를 제공하므로 이 이벤트에 해당 컨트롤들의 위치를 조정해주어야 합니다. 아래의 예제는 각각의 컨트롤들의 너비와 높이들을 현재 폼의 너비와 높이에 맞추어 조정해주고 있습니다. 계산식에 쓰여진 숫자값들은 각자 실행해보면서 맞추어 나가면 됩니다. 예제 소스) Private Sub Form_Res.. 2009. 1. 17.
CDO 객체를 이용하여 Mail 보내기. CDO 라는 객체를 코드상에서 이용하면 별도의 메일서버 로그온이 필요없이 메일 보낼수 있습니다. CDO는 Collaboration Data Objects 의 약자로 MS Exchange Server 버전과 NT Server 버전으로 나눌 수 있고 여기서는 NTS용 CDO 를 사용하겠습니다. CDO 객체를 사용하기 위해서는 cdonts.dll 이라는 파일이 필요하며 IIS 설치하면 기본적으로 설치되고 Windows\System32\ 폴더에 해당 파일이 존재해야 합니다. 아래는 기본적으로 사용되는 CDO 객체의 속성과 메서드에 대한 설명입니다. 더 있을 수 있는데 여기서는 기본적인 것만 나타냈고 추가했으면 하는게 있으면 알려주세요. 속성 From 보내는 사람 메일 주소 To 받는 사람 “;” 로 구분하여 여.. 2009. 1. 17.
Install shield 7.0 사용하여 setup package 만들기 Visual Basic6 에서 제공하는 setup package 를 가지고 만들때, 파일이 여러개가 생성되고 또 툭하면 에러나고 안되고 암튼..이래저래 깔끔하지가 못했는데, Install shield 를 사용하니 깔끔하게 하나의 파일로 생성되더군요. 그럼 setup package 를 만드는 절차입니다. 처음에 프로젝트를 생성합니다. 그러고나면.. 와 같이.. 세팅을 해주고 Next 머..언어는 각자 다를지도..암튼 Next 여기서 컴포넌트를 설정합니다. 적당한 크기의 프로그램이라면 Main App 만 있어도 될테고 위와 같이 default 로 딸려오는 Tutorial 이나 Examples 가 필요하다면 추가해야겠죠. 필요없으면 제거.그런다음 Next 여기선 필요한 파일 그룹을 등록해줍니다. 실행파일그룹,.. 2009. 1. 16.
Microsoft Internet controls Componenent 추가 및 로드 못하는 문제 VB6 에서 Web browser 컨트롤을 사용한 프로젝트를 열 때 ieframe.dll 을 로딩할 수 없다고 뜨는 문제가 있었는데요. 여기저기 찾아보니, 문제가 Explorer 7 때문이라고 나오더군요. VB6 가 나온지 오래되었고, Microsoft Internet Controls 컴포넌트도 나온지 오래되었겠죠. Explorer 6 에서 대폭 변화된 Explorer 7 은 그나마 최근에 나왔기 때문에 DLL 부분에 변경이 있어 그런것 같네요. 자세한 내용은 저도 잘;; ㅎㅎ 궁금하신 분은 한 번 잘 찾아보시구요. 이 문제는 Project > Component 메뉴에서 프로젝트에 Microsoft Internet Controls 를 추가할 때 ieframe.dll 을 찾을 수 없다는 에러 메시지가 뜨는.. 2009. 1. 16.
[API]Computer name 가져오기 선언) Public Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" _ (ByVal lpBuffer As String, nSize As Long) As Long 설명) 위의 함수는 buffer 에다 computer name 을 저장해주고 성공하면 0이 아닌 값을, 실패하면 0을 반환합니다. 그리고 버퍼에 computer name 이 아닌 값들이 들어가는데 이를 제거하기 위해 replace 함수를 써서 Chr(0) 인 값을 "" 로 바꿔주는게 좋습니다. 예) Dim strComputerName As String * 255 Dim lngReturn As Long lngReturn = GetComputerName(strCompu.. 2009. 1. 16.
배열 초기화 Erase 라는 명령어를 사용하면 배열을 초기화할 수 있습니다. 만약 배열이 정적 배열이라면 저장되어 있는 값을 모두 0으로 초기화 해버리고 동적 배열이라면 배열 크기 자체도 모두 제거합니다. 예) Erase 배열이름 2009. 1. 16.
[API]Network drive 끊기 선언) Public Declare Function WNetCancelConnection2 Lib "mpr.dll" Alias "WNetCancelConnection2A" _ (ByVal lpName As String, ByVal dwFlags As Long, ByVal fForce As Long) As Long Public Const NO_ERROR = 0 Public Const CONNECT_UPDATE_PROFILE = &H1 설명) Windows 95 버전 이상에서 사용할 수 있습니다. 위의 API 함수를 먼저 선언해주어야 하며, 파라미터의 설명은 다음과 같습니다. lpName : network drive name. 현재 매핑되어있는 네트워크 드라이브의 경로로 예로 W: 같은 것입니다. dwFlag.. 2009. 1. 16.
[API]Network drive 연결하기 선언) Public Declare Function WNetAddConnection2 Lib "mpr.dll" Alias "WNetAddConnection2A" _ (lpNetResource As NETRESOURCE, ByVal lpPassword As String, ByVal lpUserName As String, ByVal dwFlags As Long) As Long NETRESOURCE 구조체 선언) Public Type NETRESOURCE dwScope As Long dwType As Long dwDisplayType As Long dwUsage As Long lpLocalName As String lpRemoteName As String lpComment As String lpProvider .. 2009. 1. 16.
[API]Domain 과 User name 가져오기. Domain/Computer name 과 user name 을 가져오는 API 입니다. 이 API 의 설명은 다음과 같습니다. The GetUserNameEx function retrieves the name of the user or other security principal associated with the calling thread. You can specify the format of the returned name. 해석) GetUserNameEx 함수는 사용자 이름이나 호출하는 thread 와 관련있는 다른 보안 주체를 가져온다. 그리고 반환되는 이름의 형식을 지정할 수가 있다. 라고 되어있는데, 다른 보안 주체라는 것이 예를 들어 client 가 특정 network domain 에 묶여있.. 2009. 1. 16.