5.11 Wie kann ich ein FlexGrid mit einer Eingabemöglichkeit versehen?
VB5-VB6
Von: Volker Schmid
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.