DataGrid: заполнить определенную ячейку и вывести содержимое на печать - VB
Формулировка задачи:
Здравствуйте, подскажите пожалуйста, как в таблице data grid заполнить например ячейку [1,2]? Так не получается:
И еще один вопрос. Как вывести таблице на печать? Заранее спасибо. В интернете совсем на эту тему не нашел.
Листинг программы
- DataGrid1.Item(1, 1) = "dujh"
Решение задачи: «DataGrid: заполнить определенную ячейку и вывести содержимое на печать»
textual
Листинг программы
- Private Sub Command1_Click()
- Dim pagex As Integer, pagey As Integer
- Dim rost As Integer, tolst As Integer
- Dim x As Integer, y As Integer
- Dim tabtall As Integer, tabtolst As Integer
- Dim i As Integer, j As Integer, tolstsim As Integer
- Dim stlen As Integer, st As String, sim As Integer
- Dim strok As String, k As Integer, counter As Integer
- Dim alignflag As Integer, tolstst As Integer
- Dim y1 As Integer, stroka As String, n As Integer
- 'включаем обработку нажатия клавиши ОТМЕНА
- On Error GoTo 1
- Dialog1.CancelError = True
- 'Выводим окно выбора принтера
- Dialog1.ShowPrinter
- 'Определить ширину листа
- pagex = Printer.ScaleWidth
- 'определить высоту листа
- pagey = Printer.ScaleHeight
- 'Вычислить ширину таблицы
- For i = 0 To Grid.Cols - 1
- tabtolst = tabtolst + Grid.ColWidth(i)
- Next i
- 'вычисляем начальную точку х так, что бы таблица была по середине листа
- x = pagex / 2 - tabtolst / 2
- 'задать начальную точку y
- y = 0.1 * pagey
- y1 = y
- 'Устанавливаем шрифт для принтера
- Printer.FontName = Grid.Font.Name
- Printer.FontSize = Grid.Font.Size - 1
- 'вывод таблицы
- For i = 0 To Grid.Rows - 1
- 'задаем начальное значение для вывода ячеек строки
- x = pagex / 2 - tabtolst / 2
- Grid.Row = i
- For j = 0 To Grid.Cols - 1
- Grid.Col = j
- 'определить ширину и высоту текущей ячейки
- rost = Grid.RowHeight(i)
- tolst = Grid.ColWidth(j)
- 'Определить тип выравнивания текста
- alignflag = Grid.CellAlignment
- 'рисуем ячейку
- Printer.Line (x, y)-(x + tolst, y + rost), vbBlack, B
- 'Получаем текст из ячейки
- stroka = Grid.Text
- 'Вычислить ширину текста
- tolstst = Printer.TextWidth(stroka)
- 'Если ширина строки больше чем ширина столбца
- If tolstst > tolst Then
- 'Получить ширину одного символа
- tolstsim = Int(tolstst / Len(stroka))
- 'Получить воозможное кол-во символов в одной строке
- n = Int(Grid.ColWidth(j) / tolstsim)
- 'Просматриваем посимвольно строку и формипуем подстроки
- For k = 1 To Len(stroka) Step n
- st = st + Mid(stroka, k, n)
- 'Выводим подстроку с учетом выравнивания текта в ячейке
- Select Case alignflag
- Case 0 To 2
- Printer.CurrentX = x + 20
- Case 3 To 4
- Printer.CurrentX = x + Grid.ColWidth(j) / 2 - Printer.TextWidth(st) / 2
- Case 5 To 6
- Printer.CurrentX = x + 20
- End Select
- Printer.CurrentY = y1 + 20
- Printer.Print st
- y1 = y1 + Printer.TextHeight(st)
- st = ""
- Next k
- 'Возвращаем y1 в норму
- y1 = y
- 'если ширина строки меньше чем ширина текущего столбца
- Else
- 'печатаем текст в одну строку
- Select Case alignflag
- Case 3 To 4
- Printer.CurrentX = x + Grid.ColWidth(j) / 2 - Printer.TextWidth(stroka) / 2
- Case 0 To 2
- Printer.CurrentX = x + 20
- Case 5 To 6
- Printer.CurrentX = x + 20
- End Select
- Printer.CurrentY = y + Grid.RowHeight(i) / 2 - Printer.TextHeight(stroka) / 2
- Printer.Print stroka
- End If
- 'смещаем x на ширину предыдущего столбца
- x = x + tolst
- Next j
- 'смещаем y на высоту предыдущей строки
- y = y + rost
- If y >= 0.9 * pagey Then
- Printer.NewPage
- y = 0.1 * pagey
- End If
- Next i
- Printer.EndDoc
- Exit Sub
- 1:
- Exit Sub
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д