2008-10-24 28 views
4

在VB6中,我在窗體上有一個DTPicker控件。 (DTPicker是日曆日期/時間選擇器,包含在Microsoft Windows公共控件-2 6.0中,可從組件對話框中獲得)。更改DTPicker控件中的文本顏色

雖然有許多屬性會影響日曆的顏色,沒有屬性允許更改文本框中顯示的日期的顏色。我正在尋找像標準TextBox的ForeColor屬性。

有沒有人有一個API的魔術,讓我來模擬該屬性?

回答

1

我討厭發佈一些並不真正有用的東西,但這似乎超出了微軟希望開發人員用控件做的事情。雖然必須有一個API調用來設置顏色(Windows肯定知道在啓用時將其繪製爲黑色,在禁用時將其設爲灰色),但這樣做的方法卻讓我感到不安。

我的建議,如果沒有其他人迴應如何去做你所需要的,就是要麼獲得一個新的DateTime Picker控件和所需的屬性(看起來有幾個第三方選項),或者「roll你自己的「控制。

FWIW,VB.NET中存在這個相同的問題,唯一不同的是,Microsoft特別覆蓋(然後隱藏)從通用控件對象繼承的ForeColor(和BackColor)屬性而不做任何事情。

+0

我打算接受這個答案,因爲這是我一年以來收到的唯一一個,它與我最終做的事情完全匹配,這就是放棄。奇怪的是,微軟並沒有爲此公開財產,但是......無論如何。 – JeffK 2010-01-06 22:30:15

0

我將解決DatePicker對象的兩個問題及其解決方法。

  1. 您不能將一個空值放入DatePicker,這導致我到第二個問題。
  2. 您不能更改字體顏色至少使其顯示爲空白。

爲了保持DatePicker的功能並獲得空白值和常規字體格式選項(顏色等)的功能,我使用了兩個對象。首先製作一個DTP對象並設置寬度,這樣您才能真正看到下拉箭頭。對我來說這是15.然後製作一個足夠寬的普通文本框來保存你的日期。將DTP箭頭直接放在文本框的右側(或左側)。然後,你只需像這樣代碼添加到DTP的Change事件以複製其.value的到.text文本框的:

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

然後有任何數據的引用,你需要訪問MyDateTextBox.Text代替MyDTP的。價值和presto!您可以使用常規文本框的格式控制來獲得DTP的功能。

編輯: 對不起JeffK,9年前我沒有在生產環境中使用VB。 :)我想將功能的另一端添加到此處。這允許TextBox和DTP之間的雙向同步。 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 
+0

這看起來像是一個可行的解決方案。基本上是@smbarbour建議的「推出自己的」選項。這個想法九年前(九年)在哪裏? **: - )** – JeffK 2017-09-13 19:34:59