2008-10-24 9 views
4

VB6에서는 양식에 DTPicker 컨트롤이 있습니다. DTPicker는 구성 요소 대화 상자에서 사용할 수있는 Microsoft Windows Common Controls-2 6.0에 포함 된 달력 날짜/시간 선택기입니다.DTPicker 컨트롤의 텍스트 색상 변경

일정이 내려갈 때의 색에 영향을주는 많은 속성이 있지만 텍스트 상자에 표시되는 날짜의 색상을 변경할 수있는 속성이 아닙니다. 나는 표준 TextBox의 ForeColor 속성과 같은 것을 찾고있다.

아무도 그 속성을 시뮬레이션 할 수있는 작은 API 마법을 가지고 있습니까?

답변

1

나는 정말로 도움이되지 않는 것을 게시하는 것을 싫어하지만 이것은 마이크로 소프트가 개발자들에게 의도했던 것의 범위를 벗어나는 것으로 보인다. 분명히 색상을 설정하는 API 호출이 있어야하지만 (Windows는 활성화되었을 때 검정으로 칠하고 회색으로 비활성화 될 때이를 분명히 알 수 있음), 그렇게하는 방법은 나를 벗어납니다.

다른 사람이 필요로하는 것을 응답하는 방법이 없다면 필요한 속성으로 새로운 DateTime Picker 컨트롤을 구하는 것입니다 (몇 가지 타사 옵션이있는 것으로 보입니다). 또는 "roll 당신 자신의 "통제.

FWIW,이 동일한 문제는 VB.NET에서 예외적으로 Microsoft가 특별히 수행하지 않는 일반 컨트롤 개체에서 상속 된 ForeColor (및 BackColor) 속성을 무시하고 숨 깁니다.

+0

내가 1 년 넘게받은 유일한 답변이기 때문에이 답변을 수락 할 것입니다. 그리고 그것은 결국 내가 포기했던 일과 잘 일치합니다. 이상하게도 Microsoft는이 자산을 공개하지 않았지만 ... 뭐든간에. – JeffK

0

DatePicker 개체에 대한 두 가지 문제와 그에 대한 해결 방법을 다룰 것입니다.

  1. DatePicker에 공백 값을 입력 할 수 없으므로 두 번째 문제가 발생합니다.
  2. 적어도 공백으로 표시되도록 글꼴 색을 변경할 수 없습니다.

DatePicker의 기능을 유지하고 공백 값과 일반적인 글꼴 서식 옵션 (색 등)을 유지하려면 두 가지 개체를 사용했습니다. 먼저 드롭 다운 화살표 만 볼 수 있도록 DTP 객체를 만들고 너비를 설정하십시오. 내게 이것은 15 살이었습니다. 그런 다음 당신의 데이트를 저장할만큼 넓은 일반 TextBox를 만드십시오. DTP 화살표를 텍스트 상자의 오른쪽 (또는 왼쪽)에 직접 놓습니다. 그럼 당신은 단순히과 같이 TextBox의는 .text로의 .Value를 복사 할 DTP의 변경 이벤트에 코드를 추가

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

그런 다음 당신이 MyDTP 대신 MyDateTextBox.Text에 액세스해야하는 모든 데이터 참조가 가치와 프레스토! 일반 TextBox의 서식 지정 컨트롤을 사용하여 DTP의 기능을 사용할 수 있습니다.

편집 : 죄송합니다 JeffK, 9 년 전 프로덕션 환경에서 VB에서 작업하지 않았습니다. :) 나는이 기능의 다른면을 추가하고 싶습니다. 이렇게하면 TextBox와 DTP간에 양방향 동기화가 가능합니다. IE : 수동으로 텍스트 상자에 날짜를 입력하면 DTP 달력이옵니다. TextBox가 비어 있거나 잘못된 날짜 인 경우 DTP의 기본값은 오늘 날짜입니다.

+0

이것은 실행 가능한 해결책 인 것처럼 보입니다. 기본적으로 @smbarbour가 제안한 "자신 만의 롤"옵션. 이 아이디어는 9 년 전에 어디에서 나왔습니까? ** : -) ** – JeffK

관련 문제