Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 | 2 |

 

  Вопрос: Печать MSFlexGrid Добавлено: 09.01.04 00:53  

Автор вопроса:  Justas  | Web-сайт: justas.newmail.ru | ICQ: 259418212 

Народ выручайте!
Надо срочно (до вторника) напечатать MSFlexGrid.
Не набор записей из базы, а именно MSFlexGrid со всем его содержимым.
Есть у кого - нибудь опыт в этом деле?

Или кто поможет разобраться в примере?
У меня есть процедурка печати из MSFlexGrid, но там надо кое что изменить под мои надобности, а где и что менять разобраться немогу.
Кто-нить поможет?
Ежели да, то примерчик в почту зашлю.
Народ, у кого время есть, выручайте плиз!!!

Ответить

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

Номер ответа: 1
Автор ответа:
 Justas



ICQ: 259418212 

Вопросов: 24
Ответов: 325
 Web-сайт: justas.newmail.ru
 Профиль | | #1
Добавлено: 09.01.04 07:14

Если кто нибудь всё-же захочет помочь, то модуль с функцией печяти из мсфлекс грида лежит тут:
http://www.justas.newmail.ru/files/print.zip
Проблема в том - что он выводит на печать грид таким образом, что все столбцы одинаковой ширины.
Если кто возьмёт на себя труд и переделает его, то: в гриде должно быть 7 столбцов. Ширина столбцов: 1,8см; 1,5см; 8,5см; 8,5см; 3см; 1,8см; 1см. В МсФлексе у меня столбцы разной ширины, а при печати - столбцы становятся одинаковые. Если кто переделает функцию - шлите её на justas@bk.ru

  

Ответить

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



ICQ: 259418212 

Вопросов: 24
Ответов: 325
 Web-сайт: justas.newmail.ru
 Профиль | | #2
Добавлено: 10.01.04 04:37
Братья прогеры, ну помогите - же! Хелп!!!

Ответить

Номер ответа: 3
Автор ответа:
 Justas



ICQ: 259418212 

Вопросов: 24
Ответов: 325
 Web-сайт: justas.newmail.ru
 Профиль | | #3
Добавлено: 12.01.04 00:57
 

Ответить

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



ICQ: 259418212 

Вопросов: 24
Ответов: 325
 Web-сайт: justas.newmail.ru
 Профиль | | #4
Добавлено: 12.01.04 07:05

Что-то ни кто на помощь не спешит :(( Или дух альтруизма окончательно покинул програмеров???

Я конечно понимаю, олимпийские задачки решать прикольнее, но тут реальная проблемма которую действительно надо срочно решить. Кто-нить ХЕЛП!!!

Ответить

Номер ответа: 5
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #5
Добавлено: 12.01.04 14:02

Попробуй GetPixel - PutPixel. Тогда он будет выводить именно MSFlexGrid, расположенный у тебя на форме...

Ответить

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



ICQ: 259418212 

Вопросов: 24
Ответов: 325
 Web-сайт: justas.newmail.ru
 Профиль | | #6
Добавлено: 13.01.04 00:18
Sharp А не мог-бы ты примерчик наваять? Ну хоть бы и на текстбоксе? Или сильно долго? А то я себе не очень хорошо представляю то про что ты написал...

Ответить

Номер ответа: 7
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #7
Добавлено: 13.01.04 00:29
Ну вот для MSFlexGrid:
Private Declare Function SetPixel Lib "gdi32.dll" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
Private Declare Function GetPixel Lib "gdi32.dll" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function GetDC Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Sub Command1_Click()
    For i = 0 To fg.Width
        For j = 0 To fg.Height
            s = GetPixel(GetDC(fg.hwnd), i, j)
            Picture1.PSet (i, j), s
        Next
    Next
End Sub
У меня работает. Вывод в Picture1 замени на вывод на принтер. Работает, правда, медленно, но работает...

Ответить

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


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #8
Добавлено: 13.01.04 00:29
Ну вот для MSFlexGrid:
Private Declare Function SetPixel Lib "gdi32.dll" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
Private Declare Function GetPixel Lib "gdi32.dll" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function GetDC Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Sub Command1_Click()
    For i = 0 To fg.Width
        For j = 0 To fg.Height
            s = GetPixel(GetDC(fg.hwnd), i, j)
            Picture1.PSet (i, j), s
        Next
    Next
End Sub
У меня работает. Вывод в Picture1 замени на вывод на принтер. Работает, правда, медленно, но работает...

Ответить

Номер ответа: 9
Автор ответа:
 Justas



ICQ: 259418212 

Вопросов: 24
Ответов: 325
 Web-сайт: justas.newmail.ru
 Профиль | | #9
Добавлено: 13.01.04 00:51

Спасибо конечно, но больно долго. Там где она работать будет вообще 233_я машина :((

Sharp , может посмотришь на http://www.justas.newmail.ru/files/print.zip и переделаешь функцию как я чуть выше писал. Если помочь захочешь конечно...

Ответить

Номер ответа: 10
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #10
Добавлено: 13.01.04 00:54
Помочь-то я может и хотел бы, но ни в принтерах, ни в MSFlexGrid я ровным счетом ничего не смыслю.

Ответить

Номер ответа: 11
Автор ответа:
 Justas



ICQ: 259418212 

Вопросов: 24
Ответов: 325
 Web-сайт: justas.newmail.ru
 Профиль | | #11
Добавлено: 13.01.04 01:03

Жаль, я уж было обрадовался :))

Кто нибудь ПОМОГИТЕ, я уже почти пропал ...

Ответить

Номер ответа: 12
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #12 Добавлено: 13.01.04 01:46

А зачем GetPixel - SetPixel ? Они жутко медленные. Я тут наваял немножко проектик, вот его код:

'Добавь PictureBox

Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, _
    ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, _
    ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, _
    ByVal dwRop As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd _
    As Long, ByVal hdc As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long


Private Sub Command1_Click()
    Dim fDC As Long
    ' получение hDC грида

    fDC = GetDC(MSHFlexGrid1.hwnd)
    PictureBox.Width = MSHFlexGrid1.Width
    PictureBox.Height = MSHFlexGrid1.Height
    PictureBox.AutoRedraw = True
    ' копирование его изображения в PictureBox
    BitBlt PictureBox.hdc, 0, 0, MSHFlexGrid1.Width / Screen.TwipsPerPixelX, _
                                MSHFlexGrid1.Height / Screen.TwipsPerPixelY, _
                                fDC, 0, 0, vbSrcCopy
    ' освобождение устройства
    ReleaseDC MSHFlexGrid1.hwnd, fDC
    PictureBox.Refresh
End Sub

Private Sub Command2_Click()
    PictureBox.Cls
End Sub

' PictureBox можно сделать невидимым, чтобы не мешался, а как Picture распечатать думаю сообразишь :)

Ответить

Номер ответа: 13
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #13
Добавлено: 13.01.04 01:50
GetPixel/SetPixel - это я в качестве первого варианта предложил...

Ответить

Номер ответа: 14
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #14 Добавлено: 13.01.04 02:14
To Sharp: ты так ответил, что мне аж неудобно стало как будто я тебя в чем-то упрекнул. Даже мыслей не было

Ответить

Номер ответа: 15
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #15
Добавлено: 13.01.04 02:20
Да ничего страшного. Надо ж мне было как-то оправдаться, что я не ламо...

Ответить

Страница: 1 | 2 |

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



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