|
1) 新しいプロジェクトで、ActiveX コントロールを選択
2) プロジェクトのプロパティで、名前を「LBAxControl」に変更
3) UserControl1 のオブジェクト名を「DateField」に変更
4) 名前をつけてプロジェクトを保存する
|
|
1) 「TextBox」を貼り付け
2) オブジェクト名を「InputText」に変更
3) 「Text」プロパティをクリア
4) 「Visible」プロパティを 「False」に変更
5) 「MaxLength」プロパティを 「6」に変更
1) 「Label」を貼り付け
2) オブジェクト名を「DspLabel」に変更
3) 「Caption」プロパティをクリア
4) 「BorderStyle」プロパティを「実線」にする
1) DateField と、DspLavel の大きさを InputText に合わせる
2) DspLavelとInputText の位置を (0,0) とする
|
|
1) プロジェクト(標準 EXE)を追加
2) プロジェクト名を「TEST」とする
3) 追加したプロジェクトに「Form」を追加
|
|
|
Private Sub InputText_LostFocus()
If Not TextToDateFormat(DspLabel, InputText.Text) Then
MsgBox ("Date Error")
InputText.SetFocus
Exit Sub
End If
InputText.Visible = False
End Sub
Private Sub UserControl_GotFocus()
InputText.Visible = True
InputText.SetFocus
End Sub
Private Sub UserControl_Initialize()
InputText.Width = UserControl.Width
InputText.Height = UserControl.Height
End Sub
Private Sub UserControl_Resize()
DspLabel.Width = UserControl.Width
DspLabel.Height = UserControl.Height
End Sub
| |
|
|
|
1) 「ツール」の「プロシージャの追加」を選択
2) 名前に「Text」と入力して、Property プロシージャを選択
3) 「As Variant」 を 「As String」に変更
4) 以下のコードを追加
|
Public Property Get Text() As String
Text = InputText.Text
End Property
Public Property Let Text(ByVal vNewValue As String)
InputText.Text = NewValue
Call TextToDateFormat(DspLabel, InputText.Text)
End Property
| |
|
|
|
1) ユーザーコントロールに、標準モジュールを追加
2) オブジェクト名を「LBAxFunction」に変更
3) 以下のコードを追加
|
Option Explicit
Public Function TextToDateFormat(TargetObj As Label, TargetData As String)
Dim FieldData As String
FieldData = Replace(TargetData, " ", "")
If FieldData = "" Then
TargetObj.Caption = ""
TextToDateFormat = True
Exit Function
End If
FieldData = Mid(TargetData, 3, 2) & "/" & Right(TargetData, 2) & "/" & Left(TargetData, 2)
If Not IsDate(FieldData) Then
TextToDateFormat = False
Exit Function
End If
TargetObj.Caption = Left(TargetData, 2) & "/" & Mid(TargetData, 3, 2) & "/" & Right(TargetData, 2)
TextToDateFormat = True
End Function
| |
|
|
|
DataField に「Function プロシージャ」を追加 (本来はActiveX dll(関数ライブラリ) に入れる)
|
Public Function CenterWindow(ScreenObj As Object, FormName As Object)
FormName.Move (ScreenObj.Width - FormName.Width) / 2, _
(ScreenObj.Height - FormName.Height) / 2, _
FormName.Width, _
FormName.Height
End Function
| |
|
Form1 に以下を追加
|
Private Sub Form_Load()
DateField1.CenterWindow Screen, Form1
End Sub
| |
|
|
|
1) 「TEST」をスタートアップとして設定する
2) 「Form1」に作成したコントロールを貼り付け、実行する
|
|
1) LBAxControl.ocxの作成
2) 全て保存
レジストリには、「LBAxControl.DateField」として登録される
|
|