在VB6中,我在窗體上有一個DTPicker控件。 (DTPicker是日曆日期/時間選擇器,包含在Microsoft Windows公共控件-2 6.0中,可從組件對話框中獲得)。更改DTPicker控件中的文本顏色
雖然有許多屬性會影響日曆的顏色,沒有屬性允許更改文本框中顯示的日期的顏色。我正在尋找像標準TextBox的ForeColor屬性。
有沒有人有一個API的魔術,讓我來模擬該屬性?
在VB6中,我在窗體上有一個DTPicker控件。 (DTPicker是日曆日期/時間選擇器,包含在Microsoft Windows公共控件-2 6.0中,可從組件對話框中獲得)。更改DTPicker控件中的文本顏色
雖然有許多屬性會影響日曆的顏色,沒有屬性允許更改文本框中顯示的日期的顏色。我正在尋找像標準TextBox的ForeColor屬性。
有沒有人有一個API的魔術,讓我來模擬該屬性?
我討厭發佈一些並不真正有用的東西,但這似乎超出了微軟希望開發人員用控件做的事情。雖然必須有一個API調用來設置顏色(Windows肯定知道在啓用時將其繪製爲黑色,在禁用時將其設爲灰色),但這樣做的方法卻讓我感到不安。
我的建議,如果沒有其他人迴應如何去做你所需要的,就是要麼獲得一個新的DateTime Picker控件和所需的屬性(看起來有幾個第三方選項),或者「roll你自己的「控制。
FWIW,VB.NET中存在這個相同的問題,唯一不同的是,Microsoft特別覆蓋(然後隱藏)從通用控件對象繼承的ForeColor(和BackColor)屬性而不做任何事情。
我將解決DatePicker對象的兩個問題及其解決方法。
爲了保持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
這看起來像是一個可行的解決方案。基本上是@smbarbour建議的「推出自己的」選項。這個想法九年前(九年)在哪裏? **: - )** – JeffK 2017-09-13 19:34:59
我打算接受這個答案,因爲這是我一年以來收到的唯一一個,它與我最終做的事情完全匹配,這就是放棄。奇怪的是,微軟並沒有爲此公開財產,但是......無論如何。 – JeffK 2010-01-06 22:30:15