vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Eingaben im Grid 
Autor: Tortischlumpf
Datum: 11.07.06 11:51

geht noch weiter:

 Protected Overloads Overrides Sub Edit(ByVal source As _
   System.Windows.Forms.CurrencyManager, ByVal rowNum As Integer, ByVal bounds _
   As System.Drawing.Rectangle, ByVal [readOnly] As Boolean, ByVal instantText _
   As String, ByVal cellIsVisible As Boolean)
    Dim Value As Object
    Dim VarText As String
 
    MyBase.TextBox.Visible = False
 
    'Spaltenwert auslesen 
    Value = CType(GetColumnValueAtRow([source], rowNum), Object)
 
    ' Spaltenwert in String umwandeln
    If Value.Equals(DBNull.Value) Or Value.Equals(Nothing) Then
      VarText = ""
    Else
      VarText = CStr(Value)
    End If
 
    If mEdit = False Then
      If CType(source.Current, DataRowView).IsNew Then
        ' Verhindert in mCheckStateChanged rekursives Auslösen von Edit 
        mSetText = True
      End If
 
      mTextBox.Text = VarText
 
      mSetText = False
 
    End If
 
    If cellIsVisible Then
      mTextBox.Bounds = bounds
      mTextBox.Visible = True
      mTextBox.Focus()
      mTextBox.SelectionStart = mTextBox.Text.Length + 1
    Else
      mTextBox.Visible = False
    End If
  End Sub
 
  Protected Overrides Function Commit(ByVal dataSource As _
    System.Windows.Forms.CurrencyManager, ByVal rowNum As Integer) As Boolean
    Dim Value As Object
 
    mTextBox.Visible = False
 
    If mEdit Then
      mEdit = False
 
      Select Case mTextBox.Text
        Case ""
          Value = DBNull.Value
 
        Case Else
          Value = mTextBox.Text
      End Select
 
      SetColumnValueAtRow(dataSource, rowNum, Value)
    End If
 
    Return True
  End Function
 
  Protected Overrides Sub Abort(ByVal rowNum As Integer)
    MyBase.Abort(rowNum)
    mEdit = False
  End Sub
 
  Protected Overrides Function GetMinimumHeight() As Integer
    If mTextBox.Height >= cMinHeight Then
      Return mTextBox.Height
    Else
      Return cMinHeight
    End If
  End Function
 
  Protected Overrides Function GetPreferredHeight(ByVal g As _
    System.Drawing.Graphics, ByVal value As Object) As Integer
    Return mTextBox.Height
  End Function
 
  Protected Overrides Function GetPreferredSize(ByVal g As _
    System.Drawing.Graphics, ByVal value As Object) As System.Drawing.Size
    Return mTextBox.Size
  End Function
 
  'Protected Overloads Overrides Sub Paint(ByVal g As System.Drawing.Graphics, 
  ' ByVal bounds As System.Drawing.Rectangle, ByVal source As 
  ' System.Windows.Forms.CurrencyManager, ByVal rowNum As Integer)
  '  'Wird nicht verwendet
  'End Sub
 
  'Protected Overloads Overrides Sub Paint(ByVal g As System.Drawing.Graphics, 
  ' ByVal bounds As System.Drawing.Rectangle, ByVal source As 
  ' System.Windows.Forms.CurrencyManager, ByVal rowNum As Integer, ByVal 
  ' alignToRight As Boolean)
  '  'Wird nicht verwendet
  'End Sub
 
  Protected Overrides Sub SetDataGridInColumn(ByVal value As DataGrid)
    MyBase.SetDataGridInColumn(value)
    mDGrid = value
    Me.ConcedeFocus()
 
    If Not (mTextBox.Parent Is Nothing) Then
      mTextBox.Parent.Controls.Remove(mTextBox)
    End If
 
    If Not (value Is Nothing) Then
      value.Controls.Add(mTextBox)
    End If
  End Sub
 
  Private Sub InitTextBox()
    mTextBox = New MyTextBox
 
    mTextBox.Visible = False
    mTextBox.Multiline = mMultiLine
    mTextBox.AcceptsReturn = True
    mTextBox.AcceptsTab = False
    mTextBox.AutoSize = False
 
    AddHandler mTextBox.BeforeLeaving, AddressOf mTextBox_BeforeLeaving
    AddHandler mTextBox.TextChanged, AddressOf mTextBox_TextChanged
  End Sub
 
  Private Sub mTextBox_BeforeLeaving(ByRef Value As String, ByRef Cancel As _
    Boolean)
    mDGrid = Me.DataGridTableStyle.DataGrid
 
    RaiseEvent BeforeColumnUpdate(mDGrid.CurrentCell.RowNumber, _
      mDGrid.CurrentCell.ColumnNumber, Value, Cancel)
  End Sub
 
  Private Sub mTextBox_TextChanged(ByVal sender As Object, ByVal e As EventArgs)
    ' mSetText wird in Sub Edit gesetzt, wenn TextChanged durch 
    ' den Wechsel in eine Spalte im DataGrid ausgelöst worden ist. 
    If Not mSetText Then
      If Not mEdit Then
        mEdit = True
        ColumnStartedEditing(mTextBox)
      End If
      RaiseEvent TextChanged(mTextBox, mTextBox.Text)
    End If
  End Sub
 
  Protected Overrides Sub ConcedeFocus()
    MyBase.ConcedeFocus()
    mTextBox.Visible = False
  End Sub
End Class
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Eingaben im Grid1.533Tortischlumpf11.07.06 11:47
Re: Eingaben im Grid914Tortischlumpf11.07.06 11:49
Re: Eingaben im Grid1.056Tortischlumpf11.07.06 11:51
Re: Eingaben im Grid927Tortischlumpf11.07.06 11:52

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel