用ActiveX控件封装MaskEdit控件-->解决不能绑定的问题
用ActiveX控件封装MaskEdit控件-->解决不能绑定的问题
lee_jvn@21cn.com oicq:37198873
?⒖??Q定或改作通用的activeX控件.
(1)新建一ActiveX Control工程.
放置一maskedit控件於上.
其?O置?傩??⒖既缦?:
usercontrol之name:DataDate.
usercontrol之DataBindingBehavior?O定1-VvbSimpleBound
MaskedtBox之name:mskDate.
(2).新增一?????傩杂渺督?定.操作如下(我用?榉斌w系?y,可能?f法不大一??).
打?_菜??: 增益集-->增益集管理?T.
?d入Visual Basic AcitveX控制??介面精?`?K????.
?行至:建立自??的介面成?T??新增一Property:DateValue(此?傩约??槟?要操作??定的??).
下一步?_定?????P系:
?⒊S玫墓?用??目中的?傩允录?按照??定至mskDate.如mskDate?o相?P之?傩院涂山?定至usercontrol上.
在公用??目中??DateValue之?Y料??型?O定Date型
完成上述操作.
(3). ??DateValue?O定?Y料??定?傩?.
?c?xusercontrol。
打?_ 工具--->程序?傩?.
?拿??Q?谖贿x??DateValue.
?①Y料?B?Y??中如下?x?翊蛏瞎?:
“?傩跃哔Y料?B?Y功能”
“在?傩灾蹈淖?前,先呼叫CanPropertyChange.
“即?r更新”
此?rDataValue即具有??????定功能。此控件的?傩灾芯???增加?T如DataSource.DataField等??.
(4).????代?a。
a.?O定控件大小.
Private Sub UserControl_Resize()
MskDate.Move 0, 0, UserControl.Width, usercontrol.Height
End Sub
b.??dateValue的代?a修正如下:
Public Property Let DateValue(ByVal New_DateValue As Date)
m_DateValue = New_DateValue
PropertyChanged "DateValue"
If Not IsEmpty(m_DateValue) Then
If IsDate(m_DateValue) Then
If Year(m_DateValue) > 1970 Then
MskDate.Text = Format(m_DateValue, "yyyy/mm/dd")
Else
MskDate.Text = "____/__/__"
End If
Else
MskDate.Text = "____/__/__"
End If
Else
MskDate.Text = "____/__/__"
End If
End Property
,此??即?榕??嗨??鬟M?淼闹凳欠窈虾跻?求,如果是有效的??就?@示在mskDate中,否?t就?@示成其他的方式。
Private Sub MskDate_Validate(Cancel As Boolean)
If IsDate(Trim(MskDate.Text)) Then
If CanPropertyChange("DateValue") Then
m_DateValue = CDate(MskDate.Text)
PropertyChanged "DateValue"
End If
Else
MsgBox "Invalid date value!", vbExclamation, "Date Error!"
If Not IsEmpty(m_DateValue) Then
If IsDate(m_DateValue) Then
If Year(m_DateValue) > 1970 Then
MskDate.Text = Format(m_DateValue, "yyyy/mm/dd")
Else
MskDate.Text = "____/__/__"
End If
Else
MskDate.Text = "____/__/__"
End If
Else
MskDate.Text = "____/__/__"
End If
End If
End Sub
'此??即判??mskDate的值是否有效,如果有效的??就?{用 PropertyChanged "DateValue" . ?Y料就??更改DataField所??定的?Y料?谖坏闹? .
最後?⒐こ叹??g成控件DataDate.ocx 加以引用,DataValue?傩约聪喈?於text的text?傩栽谖??n中可以直接?{用.
用以上方法可以自定?x?Y料??定控件用於我??的特殊??理。
lee_jvn於2001.02.15
OICQ:37198873