Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: RichTextBox1 Добавлено: 24.03.06 16:46  

Автор вопроса:  SRV | ICQ: 254226129 
Ребята а чё код печати на этом сайте не печатает всё содержимое РИЧА!? У меня более 1000 строк в нём!

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #1
Добавлено: 24.03.06 19:11
Я уже спрашивал и присоединяюсь к вопросу.
Пытался даже спросить у автора, но тот проигнорировал видно мое
письмо.

Ответить

Номер ответа: 2
Автор ответа:
 Progos



ICQ: 311715784 

Вопросов: 39
Ответов: 157
 Web-сайт: html-expert.org.ru
 Профиль | | #2
Добавлено: 25.03.06 15:16
Я когда-то доделал этот код.
Кому надо, могу выслать на мыло.

Ответить

Номер ответа: 3
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #3
Добавлено: 25.03.06 15:52
Если будет печатать весь рич с форматированием и разметкой страницы,
то кидай на inporta[DoG]yandex[P]ru

Ответить

Номер ответа: 4
Автор ответа:
 Progos



ICQ: 311715784 

Вопросов: 39
Ответов: 157
 Web-сайт: html-expert.org.ru
 Профиль | | #4
Добавлено: 26.03.06 06:48
Option Explicit
Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Type CharRange
cpMin As Long ' First character of range (0 for start of doc)
cpMax As Long ' Last character of range (-1 for end of doc)
End Type
Private Type FormatRange
hDC As Long ' Actual DC to draw on
hdcTarget As Long ' Target DC for determining text formatting
rc As RECT ' Region of the DC to draw to (in twips)
rcPage As RECT ' Region of the entire DC (page size) (in twips)
chrg As CharRange ' Range of text to draw (see above declaration)
End Type
Private Const LOGPIXELSX = 88
Private Const LOGPIXELSY = 90
Private Const PHYSICALOFFSETX As Long = 112
Private Const PHYSICALOFFSETY As Long = 113
Private Const WM_USER As Long = &H400
Private Const EM_FORMATRANGE As Long = WM_USER + 57
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hDC As Long, ByVal nIndex As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wp As Long, lp As Any) As Long

Public Declare Function DrawText Lib "user32" Alias ";DrawTextA" (ByVal hDC As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
'Public Declare Function DrawTextEx Lib "user32" Alias ";DrawTextExA" (ByVal hDC As Long, ByVal lpsz As String, ByVal n As Long, lpRect As RECT, ByVal un As Long, lpDrawTextParams As DRAWTEXTPARAMS) As Long


Public Sub PrintRTF(rtf As RichTextBox, LeftMarginWidth As Long, TopMarginHeight, RightMarginWidth, BottomMarginHeight, Optional Text$)
Dim LeftOffset&, TopOffset&, LeftMargin&, TopMargin&
Dim RightMargin&, BottomMargin&
Dim rcDrawTo As RECT, rcPage As RECT
Dim TextLength&, NextCharPos&
Dim fr As FormatRange, Page&, tmp$

NextCharPos = 0
Page = 1
Printer.ScaleMode = vbTwips
LeftOffset = GetDeviceCaps(Printer.hDC, PHYSICALOFFSETX) / GetDeviceCaps(Printer.hDC, LOGPIXELSX) * 1440
TopOffset = GetDeviceCaps(Printer.hDC, PHYSICALOFFSETY) / GetDeviceCaps(Printer.hDC, LOGPIXELSY) * 1440
LeftMargin = LeftMarginWidth - LeftOffset
TopMargin = TopMarginHeight - TopOffset
RightMargin = (Printer.Width - RightMarginWidth) - LeftOffset
BottomMargin = (Printer.Height - BottomMarginHeight) - TopOffset
rcPage.Left = 0
rcPage.Top = 0
rcPage.Right = Printer.ScaleWidth
rcPage.Bottom = Printer.ScaleHeight
rcDrawTo.Left = LeftMargin
rcDrawTo.Top = TopMargin
rcDrawTo.Right = RightMargin
rcDrawTo.Bottom = BottomMargin
TextLength = Len(rtf.Text)
Do
' Set up the print instructions
fr.hDC = Printer.hDC ' Use the same DC for measuring and rendering
fr.hdcTarget = Printer.hDC ' Point at Printer hDC
fr.chrg.cpMin = NextCharPos
fr.chrg.cpMax = -1
fr.rc = rcDrawTo ' Indicate the area on page to draw to
fr.rcPage = rcPage ' Indicate entire size of page
Printer.Print Space(1)
tmp = "HTML EXpert " & Text '& Chr$(32) & LanguageNow(113) & Chr$(32) & Page
DrawText Printer.hDC, tmp, Len(tmp), MakeRect(10, 10, Printer.Width, 700), 0
tmp = LanguageNow(113) & Chr$(32) & Page
DrawText Printer.hDC, tmp, Len(tmp), MakeRect(Printer.Width / Printer.TwipsPerPixelX - Printer.TextWidth(tmp), 10, Printer.Width, 700), 0
NextCharPos = SendMessage(rtf.hwnd, EM_FORMATRANGE, True, fr)
If NextCharPos <= 0 Or NextCharPos >= TextLength Then Exit Do
Printer.NewPage
Page = Page + 1
MsgBox Page
Loop
Printer.EndDoc
' Allow the RTF to free up memory
SendMessage rtf.hwnd, EM_FORMATRANGE, False, ByVal CLng(0)
End Sub

Public Function MakeRect(Left&, Top&, Right&, Bottom&;) As RECT
With MakeRect
 .Bottom = Bottom
 .Left = Left
 .Right = Right
 .Top = Top
End With
End Function

Ответить

Номер ответа: 5
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #5
Добавлено: 26.03.06 08:36
спасибо за код, проверю - напишу

Ответить

Номер ответа: 6
Автор ответа:
 SRV



ICQ: 254226129 

Вопросов: 30
Ответов: 107
 Профиль | | #6 Добавлено: 27.03.06 10:26
Большое спасибо Progos печатает нормально! Спасибо...

Ответить

Номер ответа: 7
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #7
Добавлено: 27.03.06 10:53
Все работает, пасиба

Ответить

Номер ответа: 8
Автор ответа:
 Progos



ICQ: 311715784 

Вопросов: 39
Ответов: 157
 Web-сайт: html-expert.org.ru
 Профиль | | #8
Добавлено: 27.03.06 21:31
Пользуйтесь :)
Кстати, это код из моей проги HTML EXpert
Если интересно - http://html-expert.org.ru

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам