Создание отчетов

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Тимофей
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 01.03.2004 (Пн) 10:01
Откуда: Киров

Создание отчетов

Сообщение Тимофей » 22.09.2004 (Ср) 10:18

В какой форме лучше представить информацию для предварительного просмотра, а затем и печати в виде таблиц. Таблицы существуют в виде отдельных шаблонов, которые нужно заполнять массивом данных (данные, не обязательно из базы данных). Желательно редактирование таблицы при предварительном просмотре (удаление части строк и т.д.) Метод Prtint не предлагать. Сirstal Report тоже насколько мне известно работает только с данными базы данных. Какие еще есть варианты создания отчетов.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 22.09.2004 (Ср) 11:54

Можно взять любой Grid с возможностью Preview/Print, выводить в него информацию из твоих табличек, редактировать и пускай он-же ее и печатает. По крайней мере это самый простой способ (тем более с редактированием/удалением строк).

Возможностями Preview/Print обладает, к примеру, Janus GridEx.

Есть и у каких-то других... На память точно не скажу.

Сirstal Report тоже насколько мне известно работает только с данными базы данных.

А это не причем. Наверняка его можно заставить брать данные и из массива, но вот редактировать/удалять записи ты в нем не сможешь.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 22.09.2004 (Ср) 18:14

ComponentOne TrueDBGrid тоже имеет собсный превью, мы из него данные из флекса и листвью печатали. Но денег он стоит...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 23.09.2004 (Чт) 7:57

Но денег он стоит...


Да, большинство хороших компонентов стоят деньги. Все-же за спасибо мало добровольцев подобные продукты производить...

Но для серъезного продукта можно купить, а для остальных - взять диск на рынке...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

PATRIOT_kz
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 105
Зарегистрирован: 14.09.2004 (Вт) 21:09
Откуда: Павлодар, Казахстан

Сообщение PATRIOT_kz » 23.09.2004 (Чт) 11:47

Просто внедри в форму 'Grid' контрол.

И многие спрашивают "как сделать пред.просмотр печати". Отвечаю.
Делаете снимок HWND элемента 'Grid' контрола. Вот код для снимка:
следующий код закинь в модуль и назови его к примеру "cap.bas"
Код: Выделить всё
Option Explicit
Option Base 0
Private Type PALETTEENTRY
    peRed   As Byte
    peGreen As Byte
    peBlue  As Byte
    peFlags As Byte
End Type
Private Type LOGPALETTE
    palVersion       As Integer
    palNumEntries    As Integer
    palPalEntry(256) As PALETTEENTRY  ' Enough for 256 colors
End Type
Private Type GUID
    Data1    As Long
    Data2    As Integer
    Data3    As Integer
    Data4(7) As Byte
End Type
Private Type RECT
    Left   As Long
    Top    As Long
    Right  As Long
    Bottom As Long
End Type
Private Type PicBmp
    Size As Long
    Type As Long
    hBmp As Long
    hPal As Long
    Reserved As Long
End Type
Private Const RASTERCAPS As Long = 38
Private Const RC_PALETTE As Long = &H100
Private Const SIZEPALETTE As Long = 104
Private Declare Function CreateCompatibleBitmap Lib "gdi32" ( _
    ByVal hdc As Long, ByVal nWidth As Long, _
    ByVal nHeight As Long) As Long
Private Declare Function GetDeviceCaps Lib "gdi32" ( _
    ByVal hdc As Long, ByVal iCapabilitiy As Long) As Long
Private Declare Function GetSystemPaletteEntries Lib "gdi32" ( _
    ByVal hdc As Long, ByVal wStartIndex As Long, _
    ByVal wNumEntries As Long, lpPaletteEntries As PALETTEENTRY) _
    As Long
Private Declare Function CreateCompatibleDC Lib "gdi32" ( _
    ByVal hdc As Long) As Long
Private Declare Function CreatePalette Lib "gdi32" ( _
    lpLogPalette As LOGPALETTE) As Long
Private Declare Function SelectPalette Lib "gdi32" ( _
    ByVal hdc As Long, ByVal hPalette As Long, _
    ByVal bForceBackground As Long) As Long
Private Declare Function RealizePalette Lib "gdi32" ( _
    ByVal hdc As Long) As Long
Private Declare Function SelectObject Lib "gdi32" ( _
    ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function BitBlt Lib "gdi32" ( _
    ByVal hDCDest As Long, ByVal XDest As Long, _
    ByVal YDest As Long, ByVal nWidth As Long, _
    ByVal nHeight As Long, ByVal hDCSrc As Long, _
    ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) _
    As Long
Private Declare Function GetWindowDC Lib "user32" ( _
    ByVal hwnd As Long) As Long
Private Declare Function GetDC Lib "user32" ( _
    ByVal hwnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32" ( _
    ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Declare Function DeleteDC Lib "gdi32" ( _
    ByVal hdc As Long) As Long
Private Declare Function GetWindowRect Lib "user32" ( _
    ByVal hwnd As Long, lpRect As RECT) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function OleCreatePictureIndirect _
    Lib "olepro32.dll" (PicDesc As PicBmp, RefIID As GUID, _
    ByVal fPictureOwnsHandle As Long, IPic As IPicture) As Long
Public Function CreateBitmapPicture(ByVal hBmp As Long, _
        ByVal hPal As Long) As Picture
On Error Resume Next
Dim R   As Long
Dim Pic As PicBmp
Dim IPic          As IPicture
Dim IID_IDispatch As GUID
With IID_IDispatch
    .Data1 = &H20400
    .Data4(0) = &HC0
    .Data4(7) = &H46
End With
With Pic
    .Size = Len(Pic)          ' Length of structure
    .Type = vbPicTypeBitmap   ' Type of Picture (bitmap)
    .hBmp = hBmp              ' Handle to bitmap
    .hPal = hPal              ' Handle to palette (may be null)
End With
R = OleCreatePictureIndirect(Pic, IID_IDispatch, 1, IPic)
Set CreateBitmapPicture = IPic
End Function
Public Function CaptureWindow(ByVal hWndSrc As Long, _
    ByVal bClient As Boolean, ByVal LeftSrc As Long, _
    ByVal TopSrc As Long, ByVal WidthSrc As Long, _
    ByVal HeightSrc As Long) As Picture

Dim hDCMemory       As Long
Dim hBmp            As Long
Dim hBmpPrev        As Long
Dim R               As Long
Dim hDCSrc          As Long
Dim hPal            As Long
Dim hPalPrev        As Long
Dim RasterCapsScrn  As Long
Dim HasPaletteScrn  As Long
Dim PaletteSizeScrn As Long
Dim LogPal          As LOGPALETTE
If bClient Then
    hDCSrc = GetDC(hWndSrc)       'Get DC for Client area.
Else
    hDCSrc = GetWindowDC(hWndSrc) 'Get DC for entire window.
End If
hDCMemory = CreateCompatibleDC(hDCSrc)
hBmp = CreateCompatibleBitmap(hDCSrc, WidthSrc, HeightSrc)
hBmpPrev = SelectObject(hDCMemory, hBmp)
RasterCapsScrn = GetDeviceCaps(hDCSrc, RASTERCAPS)   'Raster capabilities
HasPaletteScrn = RasterCapsScrn And RC_PALETTE       'Palette support
PaletteSizeScrn = GetDeviceCaps(hDCSrc, SIZEPALETTE) 'Palette size
If HasPaletteScrn And (PaletteSizeScrn = 256) Then
    LogPal.palVersion = &H300
    LogPal.palNumEntries = 256
    R = GetSystemPaletteEntries(hDCSrc, 0, 256, LogPal.palPalEntry(0))
    hPal = CreatePalette(LogPal)
    hPalPrev = SelectPalette(hDCMemory, hPal, 0)
    R = RealizePalette(hDCMemory)
End If
R = BitBlt(hDCMemory, 0, 0, WidthSrc, HeightSrc, hDCSrc, _
    LeftSrc, TopSrc, vbSrcCopy)
hBmp = SelectObject(hDCMemory, hBmpPrev)
If HasPaletteScrn And (PaletteSizeScrn = 256) Then
    hPal = SelectPalette(hDCMemory, hPalPrev, 0)
End If
R = DeleteDC(hDCMemory)
R = ReleaseDC(hWndSrc, hDCSrc)
Set CaptureWindow = CreateBitmapPicture(hBmp, hPal)
End Function

Public Function CaptureScreen() As Picture
Dim hWndScreen As Long
hWndScreen = GetDesktopWindow()
With Screen
    Set CaptureScreen = CaptureWindow(hWndScreen, False, 0, 0, _
            .Width \ .TwipsPerPixelX, .Height \ .TwipsPerPixelY)
End With
End Function

Public Function CaptureForm(frm As Form) As Picture
With frm
    Set CaptureForm = CaptureWindow(.hwnd, False, 0, 0, _
            .ScaleX(.Width, vbTwips, vbPixels), _
            .ScaleY(.Height, vbTwips, vbPixels))
End With
End Function

Public Function CaptureClient(frm As Form) As Picture
With frm
    Set CaptureClient = CaptureWindow(.hwnd, True, 0, 0, _
            .ScaleX(.ScaleWidth, .ScaleMode, vbPixels), _
            .ScaleY(.ScaleHeight, .ScaleMode, vbPixels))
End With
End Function

Public Function CaptureActiveWindow() As Picture
Dim hWndActive As Long
Dim RectActive As RECT
hWndActive = GetForegroundWindow()
Call GetWindowRect(hWndActive, RectActive)
With RectActive
    Set CaptureActiveWindow = CaptureWindow(hWndActive, False, 0, 0, _
            .Right - .Left, .Bottom - .Top)
End With
End Function

Public Sub PrintPictureToFitPage(Prn As Printer, Pic As Picture)
Dim PicRatio     As Double
Dim PrnWidth     As Double
Dim PrnHeight    As Double
Dim PrnRatio     As Double
Dim PrnPicWidth  As Double
Dim PrnPicHeight As Double
Const vbHiMetric As Integer = 8
If Pic.Height >= Pic.Width Then
    Prn.Orientation = vbPRORPortrait   'Taller than wide
Else
    Prn.Orientation = vbPRORLandscape  'Wider than tall
End If
PicRatio = Pic.Width / Pic.Height
With Prn
    PrnWidth = .ScaleX(.ScaleWidth, .ScaleMode, vbHiMetric)
    PrnHeight = .ScaleY(.ScaleHeight, .ScaleMode, vbHiMetric)
End With
PrnRatio = PrnWidth / PrnHeight
If PicRatio >= PrnRatio Then
    PrnPicWidth = Prn.ScaleX(PrnWidth, vbHiMetric, Prn.ScaleMode)
    PrnPicHeight = Prn.ScaleY(PrnWidth / PicRatio, vbHiMetric, Prn.ScaleMode)
Else
    PrnPicHeight = Prn.ScaleY(PrnHeight, vbHiMetric, Prn.ScaleMode)
    PrnPicWidth = Prn.ScaleX(PrnHeight * PicRatio, vbHiMetric, Prn.ScaleMode)
End If
Call Prn.PaintPicture(Pic, 0, 0, PrnPicWidth, PrnPicHeight)
End Sub
Press any key . . .

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 23.09.2004 (Чт) 13:29

Вах...
А если размер грида такой, что не умещается на один экран?
Lasciate ogni speranza, voi ch'entrate.

kazah_
Обычный пользователь
Обычный пользователь
 
Сообщения: 99
Зарегистрирован: 13.01.2003 (Пн) 18:37
Откуда: Russia

Сообщение kazah_ » 23.09.2004 (Чт) 16:13

а в делфи удобнее как то...
Mr DEN - THE WAY YOU KNOW / Мр. ДЕН - Ваш Путь к Познанию!

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 23.09.2004 (Чт) 16:15

А при чем тут Делфи?
Там все аналогично.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 23.09.2004 (Чт) 16:19

Да нет, в Делфи с отчетами гораздо проще. Частично и потому, что под Делфи целая куча всяких репортов, платных и бесплатных, хороших и очень хороших.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 23.09.2004 (Чт) 16:22

А это не отчет - по определению. Это Grid. Отчеты не редактируются, а ему хочется редактировать...

И под VB всяческих компонентов полно. Никто не говорил что их мало...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 23.09.2004 (Чт) 16:29

Э... Тогда Excel :)
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 23.09.2004 (Чт) 16:32

Э... Тогда Excel


Да ладно - там ограничение на кол-во строк есть ;)

Вообще можно делать как угодно - отредактировать в Grid-e и распечатать в нем-же или выдать на печать через какой нибудь генератор отчетов - все от фантазии и желания только зависит...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Тимофей
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 01.03.2004 (Пн) 10:01
Откуда: Киров

Сообщение Тимофей » 30.09.2004 (Чт) 8:43

Exel не совсем тоже хорошо. Возникнут проблемы с пользователями. У одного 97 стоит у друго XP, а у третьего вообще нет (всякое может быть). Это будет некоторым ограничением на использование.
Кроме того таблицы сложные, т.е. не просто колонки со столбцами. А с объединением строки т.д.
С использованием Grid тоже проблема его - же невозможно редактировать.
Есть вариант использовать RichTextBox с шрифтом Terminal (только он отображает псевдографику), но там возникает проблема печати текста русскими буквами и распечатки на струных и лазерных принтерах (отсутствует поддержка DOS печати в полном объеме). Хотя это реализовано в редакторе Bred2 написанном в Делфи на API функциях.
Имеется исходник этого редактора. Если надо выложу. Можно его поковырять. И сделать все-таки полноценный построитель отчетов под VB.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.09.2004 (Чт) 9:07

Нет, исходников BRED2 не надо, это и правда Бред :)
Есть такая штука (компонент) Microsoft Office XP Components. Правда они больше заточены под использование в Web, но можно использовать и в формах. Причем, MS утверждает, что это вещи самодостаточные и что для их работы не требуется установленный офис.
Lasciate ogni speranza, voi ch'entrate.

Тимофей
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 01.03.2004 (Пн) 10:01
Откуда: Киров

Сообщение Тимофей » 30.09.2004 (Чт) 9:22

Bred не бред, хотя реализованно все достаточно корректно, путем долгих поисков в интернете я еще не встречал текстовых редакторов с такой реализацией работы с псевдографикой и текстами под DOS в части отображения и печати.
А вот про компонент Microsoft Office XP Components можно ли поподробней, насколько я понял он входит в Office XP, как его использовать ?

marvan
Бывалый
Бывалый
 
Сообщения: 269
Зарегистрирован: 22.06.2004 (Вт) 13:26
Откуда: Москва

Сообщение marvan » 30.09.2004 (Чт) 10:37

пользуйтесь WebBrowser (Microsoft Internet Controls)
1 - неограниченные возможности по оформлению отчета (html+css)
2 - редактирование - легко (dhtml)
3 - печать и сохранение в файл
4 - бесплатен и стоит на любом win* пк

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 30.09.2004 (Чт) 11:16

С использованием Grid тоже проблема его - же невозможно редактировать.


С чего-бы? Хотя смотря как редактировать... Изменить значения в колонках и удалить/добавить строки как правило с любым Grid-ом без проблем можно.

Есть вариант использовать RichTextBox с шрифтом Terminal (только он отображает псевдографику), но там возникает проблема печати текста русскими буквами и распечатки на струных и лазерных принтерах (отсутствует поддержка DOS печати в полном объеме).


Ну, допустим Terminal пропорциональный шрифт, так что им табличку рисовать затруднительно. Надо пользовать Courier New - псевдографика есть и там (см его уенкодную часть). Только вот чтобы заполнить его придется поразбираться - как вариант - просто подсовывать ему уже сформированный TextRTF.

но там возникает проблема печати текста русскими буквами и распечатки на струных и лазерных принтерах (отсутствует поддержка DOS печати в полном объеме).


Да ладно... При желании всегда можно его (выполнив определенную перекодировку) сохранить как DOS-овский файл и потом уже его печатать на каком угодно старье...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 30.09.2004 (Чт) 21:04

Andrey Fedorov писал(а):Ну, допустим Terminal пропорциональный шрифт, так что им табличку рисовать затруднительно. Надо пользовать Courier New - псевдографика есть и там (см его уенкодную часть).

1 - неправда ;-)
2 - так она и в Lucida Sans Console есть, например, чем же тогда курьер лучше?
Изображение

Тимофей
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 01.03.2004 (Пн) 10:01
Откуда: Киров

Сообщение Тимофей » 01.10.2004 (Пт) 7:13

Как раз в Terminale псведографика представлена в наилучшем виде.
В Courier New она упрощена в виде черточек, что смотрится не совсем.
Предложения по созданию отчета поэтому и прозвучало, т.к. надо обойти как раз этот момент, что бы сохранять файл как DOS и печатать на каком нибудь старье. А печатать сразу нормально.
Возможно - и вроде это и есть в Bred, в обычном RtfEdit применяется логический шрифт. Только вот как это сделать ? Вопрос кстати уже я поднимал в форуме. Но ответа так и не получил.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 01.10.2004 (Пт) 7:15

1 - неправда


А на скриншоте в приложенном файле - я его фотошоп-ом нарисовал???

2 - так она и в Lucida Sans Console есть, например, чем же тогда курьер лучше?


Да ничем. Но оба они лучше чем Terminal.

А вообще, на мой взгляд, изначальная постановка задачи дюже навороченна (до потери смысла) - надо вначале ее приводить в порядок...
Вложения
CourierNew.rar
(12.05 Кб) Скачиваний: 36
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 01.10.2004 (Пт) 7:23

Как раз в Terminale псведографика представлена в наилучшем виде.


Гы! Открой Word и попробуй "нарисовать" табличку терминалом...
Та-же псевдографика есть и в Arial-е, но рисовать что либо пропорциональными шрифтами довольно затруднительно...

В Courier New она упрощена в виде черточек, что смотрится не совсем.


Скриншот я уже выслал.

Предложения по созданию отчета поэтому и прозвучало, т.к. надо обойти как раз этот момент, что бы сохранять файл как DOS и печатать на каком нибудь старье. А печатать сразу нормально.


Ну и где проблема-то? Формируй DOS-овский текстовый файл.

Кстати, какое-нибудь старье сейчас уже довольно сложно отыскать - где ты его берешь-то?
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Тимофей
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 01.03.2004 (Пн) 10:01
Откуда: Киров

Сообщение Тимофей » 01.10.2004 (Пт) 7:39

Andrey Fedorov писал(а):
1 - неправда


А на скриншоте в приложенном файле - я его фотошоп-ом нарисовал???

2 - так она и в Lucida Sans Console есть, например, чем же тогда курьер лучше?


Да ничем. Но оба они лучше чем Terminal.

А вообще, на мой взгляд, изначальная постановка задачи дюже навороченна (до потери смысла) - надо вначале ее приводить в порядок...
Давай приведем в порядок.
1. Нужно создать отчет.
2. Имеется большой массив чисел, получаемых в результате расчета (не обязательно из БД).
3. Этот массив нужно распихать по полям таблиц.
4. Таблиц в отчете несколько, причем некоторые из них могут не заполняться вообще. Отсюда и необходимость коррекции. Зачем печатать пустые таблицы ?
5. На диске храниться пустой шаблон таблицы в виде файла. Там же храниться файл индексов (адреса куда нужно вставить).
6. Считывается файл-шаблон и файл-массив индексов.
7. Затем переменные расставляются по своим местам в строковой переменной (шаблоне).
8. Затем эта переменная передается в RichTextBox co шрифтом Terminal.
9. Далее это нужно подкорректировать и распечатать или сохранить в файл.
10. Вот как раз с печатью и проблемы.

Если нужно кину пример.

Тимофей
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 01.03.2004 (Пн) 10:01
Откуда: Киров

Сообщение Тимофей » 01.10.2004 (Пт) 7:44

<Ну и где проблема-то? Формируй DOS-овский текстовый файл.

<Кстати, какое-нибудь старье сейчас уже довольно сложно отыскать - <где ты его берешь-то?

Вот так и приходится делать.
Сохранять как DOS и печатать через Bred на лазернике.
И кстати у нас еще Star-LC15 стоит матричный, хотя контора не бедная (АО-энерго).
А хотелось печатать прямо из программы - вот в чем проблема.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 01.10.2004 (Пт) 7:55

10. Вот как раз с печатью и проблемы.


И только? Еще во времена 2-го Access-a я печатал просто выводя в порт принтера - без проблем. Принтера в те годы были... уже не помню как это называлось - с литерами, "Консулы". Даже матричных у нас еще в те годы просто не было.

С RichTextBox-a ты можешь спокойно взять его Text.
Потом тебе просто нужно будет преобразовать его строку в OEM-кодировку. Возможно CharToOem не сработает верно (ибо ты пользуешь псевдографику) а может и сработает - я просто ни разу не пробовал, поэтому точно не скажу (попробуй сам). Но и тут проблемы нет - написать свою функцию преобразования кодировки довольно просто.

Ну и запишешь эту строку в DOS-овский файл. Или сразу на принтер...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 01.10.2004 (Пт) 7:56

И забудь про Terminal - этот фонт тебе просто не подойдет - он ПРОПОРЦИОНАЛЬНЫЙ.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 01.10.2004 (Пт) 8:03

Вот так и приходится делать.
Сохранять как DOS и печатать через Bred на лазернике.


А что мешает напечатать сразу на лазернике???
Притом нормальный отчет, а не RichTextBox?
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 01.10.2004 (Пт) 8:14

Andrey Fedorov писал(а):
1 - неправда

А на скриншоте в приложенном файле - я его фотошоп-ом нарисовал???

Дык там курьер, а обсуждаем терминал. :-?

Andrey Fedorov писал(а):
2 - так она и в Lucida Sans Console есть, например, чем же тогда курьер лучше?

Да ничем. Но оба они лучше чем Terminal.

Чем лучше-то?

Andrey Fedorov писал(а):И забудь про Terminal - этот фонт тебе просто не подойдет - он ПРОПОРЦИОНАЛЬНЫЙ.

Вот именно про это я и говорил, что это неправда. Открой тот же charmap и убедись.
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 01.10.2004 (Пт) 8:27

Andrey Fedorov писал(а):
Как раз в Terminale псведографика представлена в наилучшем виде.


Гы! Открой Word и попробуй "нарисовать" табличку терминалом...
Та-же псевдографика есть и в Arial-е, но рисовать что либо пропорциональными шрифтами довольно затруднительно...

Мне Ворд не позволил выбрать не-TrueType шрифт - поэтому вот как "табличка" выглядит в Блокноте.
http://mix.web.ur.ru/2.png
Изображение

Тимофей
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 01.03.2004 (Пн) 10:01
Откуда: Киров

Сообщение Тимофей » 01.10.2004 (Пт) 8:28

Вот держите пример. Данные для простоты не вставляю.
Кстати CharToOem псевдографику не преобразует, уже пробовал, она только преобразует буквы и цифры.
Вложения
Ttttt.zip
(5.17 Кб) Скачиваний: 36

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 01.10.2004 (Пт) 8:30

Вот именно про это я и говорил, что это неправда. Открой тот же charmap и убедись.


Ну может тут я все-же протормозил - все-же давно его не пользовал...

Чем лучше-то?


А ты в блокноте набери русское слово используя терминал - хотя бы этим...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 64

    TopList