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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д