LboxCombo

  文字列処理に特化



オリジナルのコンボボックスは、いろいろな Object を取り込める仕様になっていますが、
その為、基本的なメソッドが用意されていないようなので、文字列処理に特化したメソッドを
追加しています

1) データ取り込み用の内部 DataClass クラスの実装
2) Add メソッド
3) SelectByValue メソッド
4) SelectedValue プロパティ
5) SelectedText プロパティ

以上が結局このコントロールの機能のメインです



  コード



  
Public Shared validateNone As Boolean = False

' ****************************************************** 
' validate コントロール用
' ****************************************************** 
Protected Overloads Overrides Sub OnValidating( _
  ByVal e As System.ComponentModel.CancelEventArgs)

	' ****************************************************** 
	' validateNone が True ならば、Valdating は発生しない 
	' ****************************************************** 
	If Not validateNone Then
		If Me.Enabled = True Then
			MyBase.OnValidating(e)
		End If
	End If

End Sub

Protected Overloads Overrides Sub OnValidated( _
 ByVal e As System.EventArgs)

	' ****************************************************** 
	' validateNone が True ならば、Validated は発生しない 
	' ****************************************************** 
	If Not validateNone Then
		If Me.Enabled = True Then
			MyBase.OnValidated(e)
		End If
	End If

End Sub

' ****************************************************** 
' コントロールの初期化
' ****************************************************** 
Protected Overrides Sub OnCreateControl()

	Me.DropDownStyle = Windows.Forms.ComboBoxStyle.DropDownList

	MyBase.OnCreateControl()

End Sub

' ****************************************************** 
' データ追加
' ****************************************************** 
Public Sub Add(ByVal text As String, ByVal value As String)

	Me.Items.Add(New DataClass(text, value))

End Sub

' ****************************************************** 
' 選択
' ****************************************************** 
Public Sub SelectByValue(ByVal value As String)

	Dim max As Integer = Me.Items.Count
	For i As Integer = 0 To max - 1
		If CType(Me.Items(i), DataClass).Value = value Then
			Me.SelectedIndex = i
			Exit For
		End If
	Next

End Sub

' ****************************************************** 
' 選択
' ****************************************************** 
Public Sub SelectByText(ByVal text As String)

	Me.SelectedIndex = Me.FindString(text)

End Sub

' ****************************************************** 
' データクリア
' ****************************************************** 
Public Sub Clear()

	Me.Items.Clear()

End Sub

' ****************************************************** 
' データ保存用
' ****************************************************** 
Private Class DataClass

	Public Text As String
	Public Value As Object

	Public Sub New(ByVal _text As String, ByVal _value As Object)

		Me.Text = _text
		Me.Value = _value

	End Sub

	Public Overrides Function ToString() As String
		Return Text
	End Function

End Class

' ****************************************************** 
' カスタムチェックタイプ
' ****************************************************** 
Private _CheckType As Integer = 0
<System.ComponentModel.Description("0:なし" & Chr(10) & "1:必須入力"), _
 System.ComponentModel.DefaultValue(0)> _
Public Property CheckType() As Integer
	Get
		Return _CheckType
	End Get
	Set(ByVal value As Integer)
		_CheckType = value
	End Set
End Property

' ****************************************************** 
' SQL編集用のDBデータ型
' ****************************************************** 
Private _DbDataType As Integer = 0
<System.ComponentModel.Description( _
 "0:文字列・日付" & Chr(10) & _
 "1:数値" & Chr(10) & _
 "2:NULL 時 0" & Chr(10) & _
 "3:NULL 時 Defalut(文字列・日付)" & Chr(10) & _
 "4:NULL 時 Defalut(数値)" _
 ), _
 System.ComponentModel.DefaultValue(0)> _
  Public Property DbType() As Integer
	Get
		Return _DbDataType
	End Get
	Set(ByVal value As Integer)
		_DbDataType = value
	End Set
End Property

' ****************************************************** 
' SQL用デフォルトデータ
' ****************************************************** 
Private _DbDefault As String = "0"
Public Property DbDefault() As String

	Get
		Return _DbDefault
	End Get
	Set(ByVal value As String)
		_DbDefault = value
	End Set

End Property

' ****************************************************** 
' SQL用文字列としてのデータ
' ****************************************************** 
Public ReadOnly Property DbText() As String

	Get
		If _DbDataType = 0 Then
			If Me.SelectedIndex = -1 Then
				Return "NULL"
			Else
				Return "'" + Me.SelectedValue + "'"
			End If
		End If
		If _DbDataType = 1 Then
			If Me.SelectedIndex = -1 Then
				Return "NULL"
			Else
				Return Me.SelectedValue
			End If
		End If
		If _DbDataType = 2 Then
			If Me.SelectedIndex = -1 Then
				Return "0"
			Else
				Return Me.SelectedValue
			End If
		End If
		If _DbDataType = 3 Then
			If Me.SelectedIndex = -1 Then
				Return _DbDefault
			Else
				Return "'" + Me.SelectedValue + "'"
			End If
		End If
		If _DbDataType = 4 Then
			If Me.SelectedIndex = -1 Then
				Return _DbDefault
			Else
				Return Me.SelectedValue
			End If
		End If
		Return Me.SelectedValue
	End Get

End Property

' ****************************************************** 
' 選択された値
' ****************************************************** 
Public Shadows Property SelectedValue() As String
	Get
		If Me.SelectedIndex <> -1 Then
			Return CType(Me.Items(Me.SelectedIndex), DataClass).Value
		Else
			Return ""
		End If
	End Get
	Set(ByVal value As String)
		If Me.SelectedIndex <> -1 Then
			CType(Me.Items(Me.SelectedIndex), DataClass).Value = value
		End If
	End Set
End Property

' ****************************************************** 
' 選択されたテキスト
' ****************************************************** 
Public Shadows Property SelectedText() As String
	Get
		Return CType(Me.Items(Me.SelectedIndex), DataClass).Text
	End Get
	Set(ByVal value As String)
		CType(Me.Items(Me.SelectedIndex), DataClass).Text = value
	End Set
End Property

' ****************************************************** 
' 同一処理支援
' ****************************************************** 
Private _Group As Integer = 1
<System.ComponentModel.DefaultValue(1)> _
  Public Property Group() As Integer
	Get
		Return _Group
	End Get
	Set(ByVal value As Integer)
		_Group = value
	End Set
End Property

' ****************************************************** 
' 全体のチェック
' ****************************************************** 
Private Sub LboxCombo_Validating(ByVal sender As System.Object, _
 ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Validating

	' 必須入力
	If Me._CheckType = 1 Then
		If Me.SelectedIndex = -1 Then
			MessageBox.Show("必須入力です   ", _
			"エラー", MessageBoxButtons.OK, MessageBoxIcon.Error)
			e.Cancel = True
		End If
	End If

End Sub
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ