Как печатать цветной текст с переносами? - VB

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

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

Почему-то текст не желает быть цветным при печати: Вроде все ставил - и ForeColor и шрифты, но он всё равно выводится ЧЁРНЫМ! Help please!

Решение задачи: «Как печатать цветной текст с переносами?»

textual
Листинг программы
  1. Option Explicit
  2.  
  3. Private Const HWND_BROADCAST As Long = &HFFFF
  4. Private Const WM_WININICHANGE As Long = &H1A
  5.  
  6. Private Declare Function GetProfileString Lib 'kernel32' _
  7.    Alias 'GetProfileStringA' _
  8.   (ByVal lpAppName As String, _
  9.    ByVal lpKeyName As String, _
  10.    ByVal lpDefault As String, _
  11.    ByVal lpReturnedString As String, _
  12.    ByVal nSize As Long) As Long
  13.  
  14. Private Declare Function WriteProfileString Lib 'kernel32' _
  15.    Alias 'WriteProfileStringA' _
  16.   (ByVal lpszSection As String, _
  17.    ByVal lpszKeyName As String, _
  18.    ByVal lpszString As String) As Long
  19.  
  20. Private Declare Function SendMessage Lib 'user32' _
  21.    Alias 'SendMessageA' _
  22.   (ByVal hwnd As Long, _
  23.    ByVal wMsg As Long, _
  24.    ByVal wParam As Long, _
  25.    lparam As Any) As Long
  26.  
  27. Private Sub Form_Load()
  28.     ProfileLoadWinIniList List1, 'PrinterPorts'
  29.    Command1.Enabled = False
  30. End Sub
  31.  
  32. Private Sub Command1_Click()
  33.     Call SetDefaultPrinterWinNT
  34. End Sub
  35.  
  36. Private Sub List1_Click()
  37.     Command1.Enabled = List1.ListIndex > -1
  38. End Sub
  39.  
  40. Private Sub SetDefaultPrinter(ByVal PrinterName As String, _
  41.                               ByVal DriverName As String, _
  42.                               ByVal PrinterPort As String)
  43. Dim DeviceLine As String
  44.  
  45. 'Строим строку для принтера
  46. DeviceLine = PrinterName & ',' & DriverName & ',' & PrinterPort
  47.  
  48. 'Сохранить информацию о новом принтере в секции
  49. '[WINDOWS] файла WIN.INI для ключа DEVICE=
  50. Call WriteProfileString('windows', 'Device', DeviceLine)
  51.  
  52. 'Заставить все приложения перезагрузить INI-файл
  53. Call SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, ByVal 'windows')
  54.  
  55. End Sub
  56.  
  57. Private Sub GetDriverAndPort(ByVal Buffer As String, _
  58.         DriverName As String, PrinterPort As String)
  59.  
  60. Dim posDriver As Long
  61. Dim posPort As Long
  62. DriverName = ''
  63. PrinterPort = ''
  64.  
  65. 'Имя драйвера идет вначале строки
  66. posDriver = InStr(Buffer, ',')
  67.  
  68. If posDriver > 0 Then
  69.     'Получение имени драйвера
  70.    DriverName = Left(Buffer, posDriver - 1)
  71.     'Имя порта идет после запятой
  72.    posPort = InStr(posDriver + 1, Buffer, ',')
  73.    
  74.     If posPort > 0 Then
  75.         'Получение имени порта
  76.        PrinterPort = Mid(Buffer, posDriver + 1, _
  77.                 posPort - posDriver - 1)
  78.     End If
  79. End If
  80.    
  81. End Sub
  82.  
  83. 'Создаем listbox из данных win.ini
  84. Public Function ProfileLoadWinIniList(lst As ListBox, _
  85.         lpSectionName As String) As Long
  86.  
  87.  Dim success As Long
  88.  Dim nSize As Long
  89.  Dim lpKeyName As String
  90.  Dim ret As String
  91.  
  92.  ret = Space$(8102)
  93.  nSize = Len(ret)
  94.  success = GetProfileString(lpSectionName, vbNullString, _
  95.         '', ret, nSize)
  96.  
  97. 'Возращаемая строка является списком, разделенным
  98. 'нулевыми символами
  99. If success Then
  100.  
  101.     ret = Left$(ret, success)
  102.     Do Until ret = ''
  103.       lpKeyName = StripNulls(ret)
  104.        lst.AddItem lpKeyName
  105.     Loop
  106.  
  107.  End If
  108.  
  109. 'вернем число принтеров (кол-во элементов)
  110. ProfileLoadWinIniList = lst.ListCount
  111.  
  112. End Function
  113.  
  114. Private Function StripNulls(startstr As String) As String
  115.  
  116. Dim pos As Long
  117.  
  118. pos = InStr(startstr$, Chr$(0))
  119.  
  120. If pos Then
  121.     StripNulls = Mid$(startstr, 1, pos - 1)
  122.     startstr = Mid$(startstr, pos + 1, Len(startstr))
  123. End If
  124.  
  125. End Function

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


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

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

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

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

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

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