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