Private bEnterToTab As Boolean
' ******************************************************' Enter To Tab プロパティ' ******************************************************
<System.ComponentModel.Description("Enterキーの動作をTABキーと同じにする"), _
System.ComponentModel.Browsable(True), _
System.ComponentModel.DefaultValue(False)> _
Public Property isEnterToTab() As Boolean
Get
Return bEnterToTab
End Get
Set(ByVal value As Boolean)
bEnterToTab = value
End Set
End Property
' ******************************************************' Enter To Tab メソッド' ******************************************************
Public Sub EnterToTab(ByVal flg As Boolean)
bEnterToTab = flg
End Sub
' ******************************************************' Enterキーが押されると発生するイベント' ******************************************************
Public Event EnterKey(ByVal e As lightbox.EnterKeyEventArgs)
' ******************************************************' Enter To Tab の実際の処理' ******************************************************
Protected Overrides Function ProcessDialogKey( _
ByVal keyData As Keys) As Boolean
If (keyData And Keys.KeyCode) = Keys.Enter Then
' ****************************************************** ' EnterKeyイベントの処理 ' ******************************************************
Dim e As New lightbox.EnterKeyEventArgs()
e.EnterToTab = bEnterToTab
e.Shift = ((Control.ModifierKeys And Keys.Shift) = Keys.Shift)
e.Alt = ((Control.ModifierKeys And Keys.Alt) = Keys.Alt)
e.Control = ((Control.ModifierKeys And Keys.Control) = Keys.Control)
RaiseEvent EnterKey(e)
If bEnterToTab Then
Return Me.ProcessTabKey(keyData)
End If
End If
Return MyBase.ProcessDialogKey(keyData)
End Function
Protected Overrides Function ProcessDataGridViewKey( _
ByVal e As KeyEventArgs) As Boolean
If e.KeyCode = Keys.Enter Then
' ****************************************************** ' EnterKeyイベントの処理 ' ******************************************************
Dim e2 As New lightbox.EnterKeyEventArgs()
e2.EnterToTab = bEnterToTab
e2.Shift = e.Shift
e2.Alt = ((Control.ModifierKeys And Keys.Alt) = Keys.Alt)
e2.Control = ((Control.ModifierKeys And Keys.Control) = Keys.Control)
RaiseEvent EnterKey(e2)
If bEnterToTab Then
Return Me.ProcessTabKey(e.KeyCode)
End If
End If
Return MyBase.ProcessDataGridViewKey(e)
End Function
' ******************************************************' 行移動' nSourceIndex の行を nIndex の行の前に移動する' nIndexに -1 を指定すると、行の最後に移動' ******************************************************
Public Sub MoveRow(ByVal nSourceIndex As Integer, ByVal nIndex As Integer)
If nIndex = -1 Then
nIndex = Me.GetRowCount()
End If
Me.Rows.InsertCopy(nSourceIndex, nIndex)
Dim nTarget As Integer = 0
If Me.nCurrentRow >= nIndex Then
nTarget = nSourceIndex + 1
Else
nTarget = nSourceIndex
End If
Dim nCount As Integer = Me.GetColumnCount()
Dim idx As Integer
For idx = 0 To nCount - 1
Me.Rows(nIndex).Cells(idx).Value = Me.Rows(nTarget).Cells(idx).Value
Next
Me.SetRowFlg(nIndex, Me.GetRowFlg(nTarget))
Me.Rows.RemoveAt(nTarget)
End Sub
' ******************************************************' 行移動' nCurrentRow の行を nIndex の行の前に移動する' nIndex に -1 を指定すると、行の最後に移動' ******************************************************
Public Sub MoveRow(ByVal nIndex As Integer)
Me.MoveRow(Me.nCurrentRow, nIndex)
End Sub
' ******************************************************' MDBロード' ******************************************************
Public Function LoadSqlMdb(ByVal Query As String, _
Optional ByVal nMaxCount As Integer = 100) As Boolean
LoadSqlMdb = True
Me.DbError = "" ' 接続文字列
_ConnectString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & _DbServer & ";" ' 接続オブジェクト
Dim myCon As New OleDbConnection()
myCon.ConnectionString = _ConnectString
Try
myCon.Open()
Catch e As Exception
DbError = e.Message
LoadSqlMdb = False
Exit Function
End Try
' コマンドブジェクト
Dim myCommand As New OleDbCommand()
myCommand.CommandText = Query
myCommand.Connection = myCon
' リーダ
Dim myReader As OleDbDataReader
myReader = myCommand.ExecuteReader()
' 列数
Dim nCols As Integer = myReader.FieldCount
Dim idx As Integer
Dim fldName As String
Dim fldValue As String
Dim fldType As System.Type
' 列作成
Me.Reset()
For idx = 0 To nCols - 1
fldName = myReader.GetName(idx)
Me.AddColumn(fldName, fldName)
Next
Dim nRow As Integer = 0
Do While myReader.Read()
Me.AddRow()
nRow = nRow + 1
If nRow > nMaxCount Then
Exit Do
End If
For idx = 0 To nCols - 1
If Not myReader.IsDBNull(idx) Then
fldType = myReader.GetFieldType(idx)
If fldType.Name = "String" Then
fldValue = myReader.GetValue(idx) + ""
Me.SetColumnText(idx, fldValue)
ElseIf fldType.Name = "Int32" Then
fldValue = myReader.GetInt32(idx).ToString() + ""
Me.SetColumnText(idx, fldValue)
ElseIf fldType.Name = "DateTime" Then
fldValue = myReader.GetDateTime(idx).ToString() + ""
Me.SetColumnText(idx, fldValue)
Else
fldValue = myReader.GetValue(idx).ToString() + ""
Me.SetColumnText(idx, fldValue)
End If
Else
Me.SetColumnText(idx, "")
End If
Next
Loop
myReader.Close()
myCon.Close()
End Function
' ******************************************************' ODBCロード' ******************************************************
Public Function LoadSqlOdbc(ByVal Query As String, _
Optional ByVal nMaxCount As Integer = 100) As Boolean
LoadSqlOdbc = True
Me.DbError = ""
If _DbDriver = "" Then
' 接続文字列
_ConnectString = _
"DSN=" & _DbServer & ";"
If _DbDatabase <> "" Then
_ConnectString &= "DATABASE=" & _DbDatabase & ";"
End If
_ConnectString &= _
"UID=" & _DbUser & ";" + _
"PWD=" & _DbPass & ";"
Else
' 接続文字列
_ConnectString = _
"Driver={" & _DbDriver & "};" + _
"SERVER=" & _DbServer & ";"
If _DbDatabase <> "" Then
_ConnectString &= "DATABASE=" & _DbDatabase & ";"
End If
_ConnectString &= _
"UID=" & _DbUser & ";" + _
"PWD=" & _DbPass & ";"
End If
' 接続オブジェクト
Dim myCon As New OdbcConnection()
myCon.ConnectionString = _ConnectString
Try
myCon.Open()
Catch e As Exception
DbError = e.Message
LoadSqlOdbc = False
Exit Function
End Try
' コマンドブジェクト
Dim myCommand As New OdbcCommand()
myCommand.CommandText = Query
myCommand.Connection = myCon
' リーダ
Dim myReader As OdbcDataReader
myReader = myCommand.ExecuteReader()
' 列数
Dim nCols As Integer = myReader.FieldCount
Dim idx As Integer
Dim fldName As String
Dim fldValue As String
Dim fldType As System.Type
' 列作成
Me.Reset()
For idx = 0 To nCols - 1
fldName = myReader.GetName(idx)
Me.AddColumn(fldName, fldName)
Next
Dim nRow As Integer = 0
Do While myReader.Read()
Me.AddRow()
nRow = nRow + 1
If nRow > nMaxCount Then
Exit Do
End If
For idx = 0 To nCols - 1
If Not myReader.IsDBNull(idx) Then
fldType = myReader.GetFieldType(idx)
If fldType.Name = "String" Then
fldValue = myReader.GetValue(idx) + ""
Me.SetColumnText(idx, fldValue)
ElseIf fldType.Name = "Int32" Then
fldValue = myReader.GetInt32(idx).ToString() + ""
Me.SetColumnText(idx, fldValue)
ElseIf fldType.Name = "DateTime" Then
fldValue = myReader.GetDateTime(idx).ToString() + ""
Me.SetColumnText(idx, fldValue)
Else
fldValue = myReader.GetValue(idx).ToString() + ""
Me.SetColumnText(idx, fldValue)
End If
Else
Me.SetColumnText(idx, "")
End If
Next
Loop
myReader.Close()
myCon.Close()
End Function
' ******************************************************' SQLServer ロード' ******************************************************
Public Function LoadSqlServer(ByVal Query As String, _
Optional ByVal nMaxCount As Integer = 100) As Boolean
LoadSqlServer = True
Me.DbError = "" ' 接続文字列
_ConnectString = _
"Data Source=" & _DbServer & ";" + _
"Initial Catalog=" & _DbDatabase & ";" + _
"User ID=" & _DbUser & ";" + _
"Password=" & _DbPass & ";" ' 接続オブジェクト
Dim myCon As New SqlConnection()
myCon.ConnectionString = _ConnectString
Try
myCon.Open()
Catch e As Exception
DbError = e.Message
LoadSqlServer = False
Exit Function
End Try
' コマンドブジェクト
Dim myCommand As New SqlCommand()
myCommand.CommandText = Query
myCommand.Connection = myCon
' リーダ
Dim myReader As SqlDataReader
myReader = myCommand.ExecuteReader()
' 列数
Dim nCols As Integer = myReader.FieldCount
Dim idx As Integer
Dim fldName As String
Dim fldValue As String
Dim fldType As System.Type
' 列作成
Me.Reset()
For idx = 0 To nCols - 1
fldName = myReader.GetName(idx)
Me.AddColumn(fldName, fldName)
Next
Dim nRow As Integer = 0
Do While myReader.Read()
Me.AddRow()
nRow = nRow + 1
If nRow > nMaxCount Then
Exit Do
End If
For idx = 0 To nCols - 1
If Not myReader.IsDBNull(idx) Then
fldType = myReader.GetFieldType(idx)
If fldType.Name = "String" Then
fldValue = myReader.GetValue(idx) + ""
Me.SetColumnText(idx, fldValue)
ElseIf fldType.Name = "Int32" Then
fldValue = myReader.GetInt32(idx).ToString() + ""
Me.SetColumnText(idx, fldValue)
ElseIf fldType.Name = "DateTime" Then
fldValue = myReader.GetDateTime(idx).ToString() + ""
Me.SetColumnText(idx, fldValue)
Else
fldValue = myReader.GetValue(idx).ToString() + ""
Me.SetColumnText(idx, fldValue)
End If
Else
Me.SetColumnText(idx, "")
End If
Next
Loop
myReader.Close()
myCon.Close()
End Function
Public Sub SetColumnValue(ByVal nRow As Integer, _
ByVal strName As String, ByVal value As Object)
Me.Rows(nRow).Cells(strName).Value = value
End Sub
Public Sub SetColumnValue(ByVal nRow As Integer, _
ByVal nCol As Integer, ByVal value As Object)
Me.Rows(nRow).Cells(nCol).Value = value
End Sub
Public Sub SetColumnValue(ByVal strName As String, ByVal value As Object)
Me.Rows(nCurrentRow).Cells(strName).Value = value
End Sub
Public Sub SetColumnValue(ByVal nCol As Integer, ByVal value As Object)
Me.Rows(nCurrentRow).Cells(nCol).Value = value
End Sub
Public Sub SetColumnTag(ByVal nRow As Integer, _
ByVal strName As String, ByVal value As Object)
Me.Rows(nRow).Cells(strName).Tag = value
End Sub
Public Sub SetColumnTag(ByVal nRow As Integer, _
ByVal nCol As Integer, ByVal value As Object)
Me.Rows(nRow).Cells(nCol).Tag = value
End Sub
Public Sub SetColumnTag(ByVal strName As String, ByVal value As Object)
Me.Rows(nCurrentRow).Cells(strName).Tag = value
End Sub
Public Sub SetColumnTag(ByVal nCol As Integer, ByVal value As Object)
Me.Rows(nCurrentRow).Cells(nCol).Tag = value
End Sub
Public Function GetColumnTag(ByVal strName As String) As Object
GetColumnTag = Me.Rows(nCurrentRow).Cells(strName).Tag
End Function
Public Function GetColumnTag(ByVal nCol As Integer) As Object
GetColumnTag = Me.Rows(nCurrentRow).Cells(nCol).Tag
End Function
Public Function GetColumnTag(ByVal nRow As Integer, _
ByVal strName As String) As Object
GetColumnTag = Me.Rows(nRow).Cells(strName).Tag
End Function
Public Function GetColumnTag(ByVal nRow As Integer, _
ByVal nCol As Integer) As Object
GetColumnTag = Me.Rows(nRow).Cells(nCol).Tag
End Function
Public Function GetColumnValue(ByVal strName As String) As Object
GetColumnValue = Me.Rows(nCurrentRow).Cells(strName).Value
End Function
Public Function GetColumnValue(ByVal nCol As Integer) As Object
GetColumnValue = Me.Rows(nCurrentRow).Cells(nCol).Value
End Function
Public Function GetColumnValue(ByVal nRow As Integer, _
ByVal strName As String) As Object
GetColumnValue = Me.Rows(nRow).Cells(strName).Value
End Function
Public Function GetColumnValue(ByVal nRow As Integer, _
ByVal nCol As Integer) As Object
GetColumnValue = Me.Rows(nRow).Cells(nCol).Value
End Function
Public Function GetColumnBoolean(ByVal strName As String) As Boolean
GetColumnBoolean = CType(Me.Rows(nCurrentRow).Cells(strName).Value, Boolean)
End Function
Public Function GetColumnBoolean(ByVal nCol As Integer) As Boolean
GetColumnBoolean = CType(Me.Rows(nCurrentRow).Cells(nCol).Value, Boolean)
End Function
Public Function GetColumnBoolean(ByVal nRow As Integer, _
ByVal strName As String) As Boolean
GetColumnBoolean = CType(Me.Rows(nRow).Cells(strName).Value, Boolean)
End Function
Public Function GetColumnBoolean(ByVal nRow As Integer, _
ByVal nCol As Integer) As Boolean
GetColumnBoolean = CType(Me.Rows(nRow).Cells(nCol).Value, Boolean)
End Function