DataGrid: заполнить определенную ячейку и вывести содержимое на печать - VB

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, подскажите пожалуйста, как в таблице data grid заполнить например ячейку [1,2]? Так не получается:
И еще один вопрос. Как вывести таблице на печать? Заранее спасибо. В интернете совсем на эту тему не нашел.

Решение задачи: «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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.273 из 5
Похожие ответы