CTextFieldProviderとCTexitEditorのソースコードを掲載します。独自 のフィールドプロバイダとエディタを作成する場合は、このコードを元 に作成してください。
Public Class CTextFieldProvider
Inherits CFieldProvider
Public Sub New(Optional ByVal caption As String = Nothing)
MyBase.New(caption)
End Sub
Public Overrides Function Editor() As IEditor
Return New CTextBoxEditor
End Function
Public Overrides Function ImeMode() As System.Windows.Forms.ImeMode
Return Windows.Forms.ImeMode.NoControl
End Function
End Class
Public Class CTextBoxEditor
Inherits TextBox
Implements IEditor
Public Event _Leave(ByVal sender As Object, ByVal direction As String) Implements IEditor.Leave
Public Event _ValueChanged(ByVal sender As Object) Implements IEditor.ValueChanged
Public Event _ProcessDialogKey(ByVal sender As Object, ByVal keyData As System.Windows.Forms.Keys, ByRef handled As Boolean) Implements IEditor.ProcessDialogKey
Public Sub Initialize(ByVal field As UTable.CField) Implements IEditor.Initialize
With field.DynamicSetting
Me.Font = .Font
Select Case .HorizontalAlignment
Case UTable.CSetting.EHAlign.LEFT
Me.TextAlign = HorizontalAlignment.Left
Case UTable.CSetting.EHAlign.MIDDLE
Me.TextAlign = HorizontalAlignment.Center
Case UTable.CSetting.EHAlign.RIGHT
Me.TextAlign = HorizontalAlignment.Right
End Select
End With
End Sub
Public Sub EditorEnter(ByVal key As Char, ByVal hIMC As Integer, ByVal clear As Boolean) Implements IEditor.Enter
If clear Then
Me.Text = Nothing
End If
UTable.ImmAssociateContext(Me, hIMC)
Me.Focus()
If key <> Nothing Then
Me.Text = key
Me.SelectionStart = 1
End If
End Sub
Public Property Value() As Object Implements IEditor.Value
Get
Return Me.Text
End Get
Set(ByVal value As Object)
Me.Text = value
End Set
End Property
Protected Overrides Function IsInputKey(ByVal keyData As System.Windows.Forms.Keys) As Boolean
Select Case keyData
Case Keys.Up
RaiseEvent _Leave(Me, "UP")
Return True
Case Keys.Down
RaiseEvent _Leave(Me, "DOWN")
Return True
Case Keys.Left
If Me.SelectionLength = 0 And Me.SelectionStart = 0 Then
RaiseEvent _Leave(Me, "LEFT")
Return True
End If
Case Keys.Right
If Me.SelectionLength = 0 And Me.SelectionStart = Me.Text.Length Then
RaiseEvent _Leave(Me, "RIGHT")
Return True
End If
End Select
Return MyBase.IsInputKey(keyData)
End Function
Protected Overrides Function ProcessDialogKey(ByVal keyData As System.Windows.Forms.Keys) As Boolean
Dim handled As Boolean = False
RaiseEvent _ProcessDialogKey(Me, keyData, handled)
If handled Then
Return True
Else
Return MyBase.ProcessDialogKey(keyData)
End If
End Function
Public Function RaiseValidate() As Boolean Implements IEditor.RaiseValidate
Dim e As New System.ComponentModel.CancelEventArgs
Me.OnValidating(e)
If Not e.Cancel Then
Me.OnValidated(System.EventArgs.Empty)
Return True
End If
Return False
End Function
Private Sub CTextBoxEditor_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.TextChanged
RaiseEvent _ValueChanged(Me)
End Sub
Public Function Control() As System.Windows.Forms.Control Implements IEditor.Control
Return Me
End Function
End Class
目次へ戻る