RSS
StartseiteKnowledge LibraryTop 10Impressum

5.11 Wie kann ich ein FlexGrid mit einer Eingabemöglichkeit versehen?

VB5-VB6

Von:

Für das folgende Beispiel müssen ein MS FlexGrid und eine Textbox (Visible=False) auf einem Formular platziert sein. Die Textbox sollte "txtEingabefeld" genannt werden. Nun folgenden Code in die Click- und Scroll- Ereignisse des Grids setzen:

Private Sub MSFlexGrid1_Click()
  Dim lTPPX As Single
  Dim lTPPY As Single
  
  lTPPX = Screen.TwipsPerPixelX
  lTPPY = Screen.TwipsPerPixelY
  
  With MSFlexGrid1
    txtEingabefeld.ZOrder vbBringToFront
    Set txtEingabefeld.Font = .Font
    txtEingabefeld.Move .Left + .ColPos(.Col) + lTPPX * 3, _
                        .Top + .RowPos(.Row) + lTPPY * 3, _
                        .ColWidth(.Col) - lTPPX, _
                        .RowHeight(.Row) - lTPPY
    txtEingabefeld.Text = .Text
    txtEingabefeld.SelStart = 0
    txtEingabefeld.SelLength = Len(.Text)
    txtEingabefeld.Visible = True
    txtEingabefeld.SetFocus
  End With
End Sub

Private Sub MSFlexGrid1_Scroll()
  txtEingabefeld.Visible = False
End Sub

Diesen Code sollten Sie in das Change-Ereignis der Textbox setzen, um zu verhindern das beim Scrollen des Grids eine falsche Anzeige entsteht:

Private Sub txtEingabefeld_Change()
   MSFlexGrid1.Text = txtEingabefeld.Text
End Sub

Als Vorteil hat sich erwiesen, die Textbox mit einer anderen Hintergrundfarbe als das Grid zu versehen, um die Eingabeposition für den Anwender deutlicher zu machen. Natürlich kann man dieses Beispiel noch erweitern, indem man Funktionen zum Bewegen des Eingabefeldes einfügt oder mit Kontextmenüs arbeitet.

Diese Lösung lässt sich in dieser Form nicht auf das MS Hierarchical FlexGrid Control übertragen, da hier einige Abläufe anders gehandhabt werden.