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

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

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

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

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

textual
Листинг программы
  1. Private Sub Command1_Click()
  2. Dim pagex As Integer, pagey As Integer
  3. Dim rost As Integer, tolst As Integer
  4. Dim x As Integer, y As Integer
  5. Dim tabtall As Integer, tabtolst As Integer
  6. Dim i As Integer, j As Integer, tolstsim As Integer
  7. Dim stlen As Integer, st As String, sim As Integer
  8. Dim strok As String, k As Integer, counter As Integer
  9. Dim alignflag As Integer, tolstst As Integer
  10. Dim y1 As Integer, stroka As String, n As Integer
  11. 'включаем обработку нажатия клавиши ОТМЕНА
  12. On Error GoTo 1
  13. Dialog1.CancelError = True
  14. 'Выводим окно выбора принтера
  15. Dialog1.ShowPrinter
  16. 'Определить ширину листа
  17. pagex = Printer.ScaleWidth
  18. 'определить высоту листа
  19. pagey = Printer.ScaleHeight
  20. 'Вычислить ширину таблицы
  21. For i = 0 To Grid.Cols - 1
  22. tabtolst = tabtolst + Grid.ColWidth(i)
  23. Next i
  24. 'вычисляем начальную точку х так, что бы таблица была по середине листа
  25. x = pagex / 2 - tabtolst / 2
  26. 'задать начальную точку y
  27. y = 0.1 * pagey
  28. y1 = y
  29. 'Устанавливаем шрифт для принтера
  30. Printer.FontName = Grid.Font.Name
  31. Printer.FontSize = Grid.Font.Size - 1
  32. 'вывод таблицы
  33. For i = 0 To Grid.Rows - 1
  34. 'задаем начальное значение для вывода ячеек строки
  35. x = pagex / 2 - tabtolst / 2
  36. Grid.Row = i
  37. For j = 0 To Grid.Cols - 1
  38. Grid.Col = j
  39. 'определить ширину и высоту текущей ячейки
  40. rost = Grid.RowHeight(i)
  41. tolst = Grid.ColWidth(j)
  42. 'Определить тип выравнивания текста
  43. alignflag = Grid.CellAlignment
  44. 'рисуем ячейку
  45. Printer.Line (x, y)-(x + tolst, y + rost), vbBlack, B
  46.  
  47. 'Получаем текст из ячейки
  48. stroka = Grid.Text
  49. 'Вычислить ширину текста
  50. tolstst = Printer.TextWidth(stroka)
  51.  
  52. 'Если ширина строки больше чем ширина столбца
  53. If tolstst > tolst Then
  54. 'Получить ширину одного символа
  55. tolstsim = Int(tolstst / Len(stroka))
  56. 'Получить воозможное кол-во символов в одной строке
  57. n = Int(Grid.ColWidth(j) / tolstsim)
  58. 'Просматриваем посимвольно строку и формипуем подстроки
  59. For k = 1 To Len(stroka) Step n
  60. st = st + Mid(stroka, k, n)
  61. 'Выводим подстроку с учетом выравнивания текта в ячейке
  62. Select Case alignflag
  63. Case 0 To 2
  64. Printer.CurrentX = x + 20
  65. Case 3 To 4
  66. Printer.CurrentX = x + Grid.ColWidth(j) / 2 - Printer.TextWidth(st) / 2
  67. Case 5 To 6
  68. Printer.CurrentX = x + 20
  69. End Select
  70. Printer.CurrentY = y1 + 20
  71. Printer.Print st
  72. y1 = y1 + Printer.TextHeight(st)
  73. st = ""
  74. Next k
  75. 'Возвращаем y1 в норму
  76.    y1 = y
  77.  
  78. 'если ширина строки меньше чем ширина текущего столбца
  79. Else
  80. 'печатаем текст в одну строку
  81. Select Case alignflag
  82. Case 3 To 4
  83. Printer.CurrentX = x + Grid.ColWidth(j) / 2 - Printer.TextWidth(stroka) / 2
  84. Case 0 To 2
  85. Printer.CurrentX = x + 20
  86. Case 5 To 6
  87. Printer.CurrentX = x + 20
  88. End Select
  89. Printer.CurrentY = y + Grid.RowHeight(i) / 2 - Printer.TextHeight(stroka) / 2
  90. Printer.Print stroka
  91.    
  92. End If
  93.  
  94. 'смещаем x на ширину предыдущего столбца
  95. x = x + tolst
  96. Next j
  97. 'смещаем y на высоту предыдущей строки
  98. y = y + rost
  99. If y >= 0.9 * pagey Then
  100. Printer.NewPage
  101. y = 0.1 * pagey
  102. End If
  103. Next i
  104. Printer.EndDoc
  105. Exit Sub
  106. 1:
  107. Exit Sub
  108. End Sub

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


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

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

11   голосов , оценка 4.273 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы