15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Как вводить данные через MSFlexGrid

MSFlexGrid можно использовать для ввода данных не прибегая к использованию дополнительных элементов управления ActiveX. Для этого используются события KeyPress и KeyUp. Чтобы использовать MSFlexGrid для ввода данных, добавьте на форму грид с именем FlxGrdDemo и следующий код:

Private Sub FlxGrdDemo_KeyPress(KeyAscii As Integer)
	Select Case KeyAscii
		Case vbKeyReturn
			' Когда пользователь нажимает Enter
			' то курсор перепрыгивает на следующую
			' ячейку или строку.
			With FlxGrdDemo
				If .Col + 1 <= .Cols - 1 Then
					.Col = .Col + 1
				ElseIf .Row + 1 <= .Rows - 1 Then
					.Row = .Row + 1
					.Col = 0
				Else
					.Row = 1
					.Col = 0
				End If
			End With
		Case vbKeyBack
		' Удаляем предыдущий символ при
		' нажатии клавиши backspace.
			With FlxGrdDemo
				If Trim(.Text) <> "" Then _
					.Text = Mid(.Text, 1, Len(.Text) - 1)
			End With
		Case Is < 32
		' Избегаем непечатаемых символов.
		Case Else 'Иначе печатаем всё остальное
			With FlxGrdDemo
				.Text = .Text & Chr(KeyAscii)
			End With
	End Select
End Sub
Private Sub FlxGrdDemo_KeyUp(KeyCode As _
	Integer, Shift As Integer)
	Select Case KeyCode
		' Copy
		Case vbKeyC And Shift = 2 ' Control + C
			Clipboard.Clear
			Clipboard.SetText FlxGrdDemo.Text
			KeyCode = 0
		' Paste
		Case vbKeyV And Shift = 2 'Control + V
			FlxGrdDemo.Text = Clipboard.GetText
			KeyCode = 0
		' Cut
		Case vbKeyX And Shift = 2 'Control + X
			Clipboard.Clear
			Clipboard.SetText FlxGrdDemo.Text
			FlxGrdDemo.Text = ""
			KeyCode = 0
		' Delete
		Case vbKeyDelete
			FlxGrdDemo.Text = ""
	End Select
End Sub

Вы можете установить свойство FillStyle в FlexFillRepeat, которое позволяет применять изменеия для всех выделенных ячеек.