문제

VB6에는 양식에 DTPicker 컨트롤이 있습니다. (DTPicker는 구성 요소 대화 상자에서 사용할 수있는 Microsoft Windows Common Controls-2 6.0에 포함 된 캘린더 날짜/시간 선택기입니다.)

캘린더가 떨어질 때 캘린더의 색상에 영향을 미치는 속성이 많이 있지만 텍스트 상자에 표시된 날짜의 색상을 변경할 수있는 속성은 없습니다. 표준 TextBox의 전망대 속성과 같은 것을 찾고 있습니다.

누구든지 그 속성을 시뮬레이션 할 수있는 작은 API 마법이 있습니까?

도움이 되었습니까?

해결책

나는 실제로 도움이되지 않는 것을 게시하는 것을 싫어하지만, 이것은 Microsoft가 개발자가 컨트롤과 관련이있는 범위를 벗어난 것으로 보입니다. 색상을 설정하려면 API 호출이 반드시 있어야하지만 (Windows는 활성화 될 때 검은 색을 칠하고 비활성화 할 때 회색으로 칠하는 것을 확실히 알고 있음), 그렇게하는 방법은 저를 탈출합니다.

내 권장 사항은 필요한 작업을 수행하는 방법에 응답하지 않으면 필요한 속성을 가진 새로운 DateTime Picker 컨트롤 (타사 옵션이 몇 개있는 것 같음) 또는 "자신의 자신의"컨트롤을 얻는 것입니다. .

FWIW,이 동일한 문제는 VB.NET에 존재하며 Microsoft는 일반적인 제어 객체에서 예측 명령 (및 백콜러) 속성을 구체적으로 재정의하고 숨어서 아무것도하지 않습니다.

다른 팁

DatePicker 객체와 함께 두 가지 문제를 해결하겠습니다.

  1. DatePicker에 빈 값을 넣을 수 없어서 두 번째 문제로 이어집니다.
  2. 글꼴 색상을 변경하여 최소한 비워 보이게 할 수 없습니다.

DatePicker의 기능을 유지하고 빈 값과 일반 글꼴 서식 옵션 (색상 등)을 가질 수있는 기능을 얻으려면 두 객체를 사용했습니다. 먼저 DTP 객체를 만들고 폭을 설정하여 드롭 다운 화살표 만 볼 수 있도록 너비를 설정하십시오. 나에게 이것은 15 세였다. 그런 다음 날짜를 잡을 수있을 정도로 넓은 일반 텍스트 상자를 만드십시오. DTP 화살표를 텍스트 상자의 오른쪽 (또는 왼쪽)에 직접 넣습니다. 그런 다음 DTP의 변경 이벤트에 코드를 추가하여 .Value를 텍스트 상자의 .text에 복사합니다.

Private Sub MyDTP_Change()    
    MyUserForm.MyDateTextBox.Text = MyUserForm.MyDTP.Value
End Sub

그런 다음 MyDTP.Value 및 Presto 대신 MyDateTextBox.Text에 액세스 해야하는 데이터 참조가 필요합니다! 일반 텍스트 상자의 서식 제어와 함께 DTP의 기능을 얻을 수 있습니다.

편집 : 죄송합니다 Jeffk, 9 년 전 생산 환경에서 VB와 함께 일하지 않았습니다. :) 나는 이것에 기능의 다른 쪽을 추가하고 싶습니다. 이를 통해 TextBox와 DTP 간의 2 방향 동기화가 가능합니다. IE : 수동으로 텍스트 상자에 날짜를 입력하면 DTP 캘린더가 다음과 같습니다. TextBox가 비어 있거나 잘못된 날짜가있는 경우 DTP는 오늘 날짜로 기본적으로 기본적으로 나타납니다.

Private Sub MyDateTextBox_Change()    
    If MyUserForm.MyDateTextBox.Text <> "" And 
    IsDate(MyUserForm.MyDateTextBox.Text) = True Then
        If CDate(MyUserForm.MyDateTextBox.Text) <= MyUserForm.MyDPT.MaxDate And _
        CDate(MyUserForm.MyDateTextBox.Text) >= MyUserForm.MyDPT.MinDate Then
            MyUserForm.MyDTP.Value = MyUserForm.MyDateTextBox.Text
        Else
            MyUserForm.MyDTP.Value = Date
        End If
    Else
        MyUserForm.MyDTP.Value = Date
    End If
End Sub
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top