2012-11-13 3 views
3

나는 이것이 이상한 하나라는 것을 알고 있지만 VB6에서 자리 표시 자 텍스트 기능을 에뮬레이션 할 수있는 방법이 있습니까? 그렇지 않다면 누군가 내가 할 수있는 좋은 OCX 컨트롤에 대해 알고 있는가? 이 작업을 수행하는 함수 세트로 프로그래밍 할 수 있다고 확신합니다. 이미 완료된 것을 찾고 있습니다.자리 표시 자 텍스트 VB6

내가 생각하는 자리 표시자는 VB6에서는 "서식 지정"이 아니지만 예를 들어 레이블 대신 웹 폼에 표시되는 텍스트와 같습니다.

해당 상자에 어떤 정보가 들어 있는지 알려주는 텍스트 상자 또는 사용자가 해당 상자에 입력하려는 정보의 예를 제공합니다.

언제나처럼 많은 도움을 주실 수 있습니다.

답변

3

내가 원하는 것을 정확히 이해하는지 알아 보겠습니다. 입력란에 사용자가 입력 할 내용을 표시하기 위해 "First Name"이라는 텍스트 상자가 필요합니다.

디자인 모드에서 텍스트 값을 "이름"으로 설정하면이 작업을 수행 할 수 있습니다. 그런 다음 GotFocus 이벤트에서 내부 텍스트를 삭제하여 사용자에게 빈 텍스트 상자에 정보를 입력합니다.

사용자 편의를 위해 레이블 일 때 회색 텍스트를, 사용자 입력시 검정색 텍스트를 사용할 수 있습니다. 텍스트 색상을 테스트하여 텍스트가 다시 입력 된 경우 사용자 정보를 삭제하지 않을 수도 있습니다.

+0

내가 찾고있는 것입니다. 나는 그것을 시도해야 할 것이다. 내가 뭔가를 복잡하게 생각할 때 나는 그것을 좋아하고 누군가 나에게 멋진, 간단한 대답을 준다. 작동하는 경우 정답으로 설정하겠습니다. 감사. –

6

큐 배너를 원하는 것처럼 들립니다. 또한 ComboBox 컨트롤에서도 작동합니다. 이 API를 사용하려면

Private Const CBM_FIRST As Long = &H1700& 
Private Const CB_SETCUEBANNER As Long = CBM_FIRST + 3 
Private Const ECM_FIRST As Long = &H1500& 
Private Const EM_SETCUEBANNER As Long = ECM_FIRST + 1 

Private Declare Function SendMessage Lib "user32" Alias "SendMessageW" (_ 
    ByVal hWnd As Long, _ 
    ByVal wMsg As Long, _ 
    ByVal wParam As Long, _ 
    ByVal lParam As Long) As Long 

Private Sub SetCueBannerTXT(ByVal TextBox As TextBox, ByVal CueText As String) 
    SendMessage TextBox.hWnd, EM_SETCUEBANNER, 0, StrPtr(CueText) 
End Sub 

Private Sub SetCueBannerCBO(ByVal ComboBox As ComboBox, ByVal CueText As String) 
    SendMessage ComboBox.hWnd, CB_SETCUEBANNER, 0, StrPtr(CueText) 
End Sub 

주, 당신은 Comclt32.dll 버전 6.0을 지정하는 매니페스트를 제공해야합니다.

+0

+1 [MSDN] (http://msdn.microsoft.com/en-us/library/windows/desktop/bb761639(v=vs.85).aspx) 참조하십시오. – MarkJ

+0

CC6이 필요하므로 일반적으로 표시되지 않습니다 컴파일 된 EXE를 실행할 때까지 VB6.EXE.manifest를 사용하여 실제로 필요한 경우 IDE 테스트 실행시 강제로 표시 할 수 있습니다. – Bob77