在VB6中,我在表单上有一个DTPicker控件。( DTPicker是日历日期/时间选择器,包含在-2\f25 Microsoft Windows Common Controls-2 \f25 6.0 -2\f6中,可从-2\f25 Components -2\f6对话框中找到。)
虽然有许多属性会在日历下拉时影响日历的颜色,但没有任何属性允许更改文本框中显示的日期的颜色。我正在寻找类似于标准TextBox的ForeColor属性。
有没有人有一点API魔力可以让我模拟这个属性?
发布于 2008-10-24 20:31:23
我讨厌发布一些没有真正有帮助的东西,但这似乎超出了微软开发人员对控件的预期范围。虽然肯定有一个API调用来设置颜色(Windows当然知道在启用时将其绘制为黑色,禁用时将其绘制为灰色),但我想不到这样做的方法。
我的建议是,如果没有其他人回应如何做你需要的事情,要么获得一个新的具有所需属性的DateTime选取器控件(似乎有一些第三方选项),要么“滚动”你自己的控件。
顺便说一句,同样的问题也存在于VB.NET中,除了微软专门覆盖(然后隐藏)从通用控件对象继承的ForeColor (和BackColor)属性而不做任何事情。
发布于 2017-07-20 22:59:11
我将解决DatePicker对象的两个问题和一个解决方法。
,
为了保留DatePicker的功能并获得具有空值和常规字体格式选项(颜色等)的能力,我使用了两个对象。首先创建一个DTP对象并设置宽度,以便您只能真正看到下拉箭头。对我来说,这是15。然后做一个常规的TextBox,足够宽来容纳你的约会对象。将DTP箭头直接放在文本框的右侧(或左侧)。然后,您只需向DTP的Change事件添加代码,将其.Value复制到TextBox的.Text中,如下所示:
Private Sub MyDTP_Change()
MyUserForm.MyDateTextBox.Text = MyUserForm.MyDTP.Value
End Sub然后,让您需要的任何数据引用访问MyDateTextBox.Text,而不是MyDTP.Value和presto!您可以通过常规TextBox的格式化控件获得DTP的功能。
编辑:对不起,JeffK,9年前我没有在生产环境中使用VB。:)我也想将功能的另一面添加到这里。这允许在TextBox和DTP之间进行双向同步。即:手动在TextBox中输入日期,然后显示DTP日历。如果TextBox为空或日期无效,则默认为今天的日期。
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 Subhttps://stackoverflow.com/questions/234238
复制相似问题