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目次へ戻る