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

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

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

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

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

textual
Листинг программы
Option Explicit
 
Private Const HWND_BROADCAST As Long = &HFFFF
Private Const WM_WININICHANGE As Long = &H1A
 
Private Declare Function GetProfileString Lib 'kernel32' _
   Alias 'GetProfileStringA' _
  (ByVal lpAppName As String, _
   ByVal lpKeyName As String, _
   ByVal lpDefault As String, _
   ByVal lpReturnedString As String, _
   ByVal nSize As Long) As Long
 
Private Declare Function WriteProfileString Lib 'kernel32' _
   Alias 'WriteProfileStringA' _
  (ByVal lpszSection As String, _
   ByVal lpszKeyName As String, _
   ByVal lpszString As String) As Long
 
Private Declare Function SendMessage Lib 'user32' _
   Alias 'SendMessageA' _
  (ByVal hwnd As Long, _
   ByVal wMsg As Long, _
   ByVal wParam As Long, _
   lparam As Any) As Long
 
Private Sub Form_Load()
    ProfileLoadWinIniList List1, 'PrinterPorts'
    Command1.Enabled = False
End Sub
 
Private Sub Command1_Click()
    Call SetDefaultPrinterWinNT
End Sub
 
Private Sub List1_Click()
    Command1.Enabled = List1.ListIndex > -1
End Sub
 
Private Sub SetDefaultPrinter(ByVal PrinterName As String, _
                              ByVal DriverName As String, _
                              ByVal PrinterPort As String)
Dim DeviceLine As String
 
'Строим строку для принтера
DeviceLine = PrinterName & ',' & DriverName & ',' & PrinterPort
 
'Сохранить информацию о новом принтере в секции
'[WINDOWS] файла WIN.INI для ключа DEVICE=
Call WriteProfileString('windows', 'Device', DeviceLine)
 
'Заставить все приложения перезагрузить INI-файл
Call SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, ByVal 'windows')
 
End Sub
 
Private Sub GetDriverAndPort(ByVal Buffer As String, _
        DriverName As String, PrinterPort As String)
 
Dim posDriver As Long
Dim posPort As Long
DriverName = ''
PrinterPort = ''
 
'Имя драйвера идет вначале строки
posDriver = InStr(Buffer, ',')
 
If posDriver > 0 Then
    'Получение имени драйвера
    DriverName = Left(Buffer, posDriver - 1)
    'Имя порта идет после запятой
    posPort = InStr(posDriver + 1, Buffer, ',')
    
    If posPort > 0 Then
        'Получение имени порта
        PrinterPort = Mid(Buffer, posDriver + 1, _
                posPort - posDriver - 1)
    End If
End If
   
End Sub
 
'Создаем listbox из данных win.ini
Public Function ProfileLoadWinIniList(lst As ListBox, _
        lpSectionName As String) As Long
 
 Dim success As Long
 Dim nSize As Long
 Dim lpKeyName As String
 Dim ret As String
 
 ret = Space$(8102)
 nSize = Len(ret)
 success = GetProfileString(lpSectionName, vbNullString, _
        '', ret, nSize)
 
'Возращаемая строка является списком, разделенным
'нулевыми символами
 If success Then
  
    ret = Left$(ret, success)
    Do Until ret = ''
       lpKeyName = StripNulls(ret)
       lst.AddItem lpKeyName
    Loop
 
 End If
 
'вернем число принтеров (кол-во элементов)
ProfileLoadWinIniList = lst.ListCount
 
End Function
 
Private Function StripNulls(startstr As String) As String
 
Dim pos As Long
 
pos = InStr(startstr$, Chr$(0))
  
If pos Then
    StripNulls = Mid$(startstr, 1, pos - 1)
    startstr = Mid$(startstr, pos + 1, Len(startstr))
End If
 
End Function

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


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

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

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