Распечатка ... Срочно!!!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Max!
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 502
Зарегистрирован: 03.04.2003 (Чт) 22:08
Откуда: Литва

Распечатка ... Срочно!!!

Сообщение Max! » 07.04.2003 (Пн) 17:08

Как зделать кнопку с камандои которая заставляет принтор распечатать текст в текстбоксе и оброботчик ошибок к этои команде! ПОМОГИТЕ!!! :x
Max!

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 07.04.2003 (Пн) 17:41

Ну наверное так:



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 Type RECT

Left As Long

Top As Long

Right As Long

Bottom As Long

End Type



sub myprint()

on error goto errhdl

dim rc as rect

set prn = printers (1)

with rc

left = 10

top = 10

right = 400

bottom = 400

end with

drawtext prn.hdc, text1.text & chr(0), len(text1.text)+1, rc, DT_LEFT or DT_TOP

prn.enddoc

exit sub

errhdl:

msgbox "An error occured while printing to " & prn.devicename & ": " & err.description

end sub

Max!
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 502
Зарегистрирован: 03.04.2003 (Чт) 22:08
Откуда: Литва

Сообщение Max! » 07.04.2003 (Пн) 17:47

Поясни первыи код надо вводить в модуль а второи в кнопку , или нет!

А если мне надо распечатать не с одного текст бокса а с двух , Можно так написать :


drawtext prn.hdc, text1.text & chr(0), len(text1.text)+1, rc, DT_LEFT or DT_TOP


drawtext prn.hdc, text2.text & chr(0), len(text1.text)+1, rc, DT_LEFT or DT_TOP
Max!

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 07.04.2003 (Пн) 17:55

Тогда переопредели координаты области это раз и указывай правильную длину текста это два.



А насчет указания - все можно запихать в код формы.

Max!
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 502
Зарегистрирован: 03.04.2003 (Чт) 22:08
Откуда: Литва

Сообщение Max! » 07.04.2003 (Пн) 18:08

Можешь пояснить подробнее !

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 Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Этот код надо запихать в модуль или нет?

sub myprint()
on error goto errhdl
dim rc as rect
set prn = printers (1)
with rc
left = 10
top = 10
right = 400
bottom = 400
end with
drawtext prn.hdc, text1.text & chr(0), len(text1.text)+1, rc, DT_LEFT or DT_TOP
prn.enddoc
exit sub
errhdl:
msgbox "An error occured while printing to " & prn.devicename & ": " & err.description
end sub

А Этот в кнопку? :evil:
Max!

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 07.04.2003 (Пн) 18:16

Дался тебе этот модуль! :twisted:



sub myprint можно вызывать из кнопки.



А остальной код можно запихать в начало кода формы. Что тут непонятного? :shock: Только напиши private declare вместо public.

Max!
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 502
Зарегистрирован: 03.04.2003 (Чт) 22:08
Откуда: Литва

Сообщение Max! » 07.04.2003 (Пн) 18:33

Спасибо я понял ! :D Последнии вопрос! Как будет выглядеть код если мне нужно расспечатать код с двух текстбоксов? :?: Например:
sub myprint()
on error goto errhdl
dim rc as rect
set prn = printers (1)
with rc
left = 10
top = 10
right = 400
bottom = 400
end with
drawtext prn.hdc, text1.text & chr(0), len(text1.text)+1, rc, DT_LEFT or DT_TOP
drawtext prn.hdc, text2.text & chr(0), len(text1.text)+1, rc, DT_LEFT or
DT_TOP ' Так можно сделать , если нет приведи пример правильного кода !
prn.enddoc
exit sub
errhdl:
msgbox "An error occured while printing to " & prn.devicename & ": " & err.description
end sub
Max!

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 07.04.2003 (Пн) 18:38

Можно попробовать так:

drawtext prn.hdc, text1.text & chr(0), len(text1.text)+1, rc, DT_LEFT or DT_TOP

drawtext prn.hdc, text2.text & chr(0), len(text1.text)+1, rc, DT_LEFT or DT_BOTTOM



Да, забыл, константы имеют такие значения:



Const DT_TOP = &H0

Const DT_BOTTOM = &H8

Const DT_RIGHT = &H2

Const DT_LEFT = &H0

Max!
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 502
Зарегистрирован: 03.04.2003 (Чт) 22:08
Откуда: Литва

Сообщение Max! » 07.04.2003 (Пн) 18:43

Спасибо большое!!! :lol: :D :shock: :wink:
Max!

Max!
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 502
Зарегистрирован: 03.04.2003 (Чт) 22:08
Откуда: Литва

Сообщение Max! » 07.04.2003 (Пн) 23:03

Вот ошибка !! :evil: Я разместил Этот код: 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 в форму вместо : Private Form_load()
и мне после кампеляции выдает ошибку и обведена : 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 ЭТА СТРОЧКА ! ВЧЕМ ДЕЛО ПОМОГИТЕ! :evil: :x
Max!

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 08.04.2003 (Вт) 10:17

Во первых, что за ошибка и потом я тебе сказал, что если это размещается в коде формы, то надо писать private declare. Выше же написено.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 08.04.2003 (Вт) 10:18

Нельзя публичные объявления в форме делать, только private.


Черт! На одну минуту! :evil:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Max!
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 502
Зарегистрирован: 03.04.2003 (Чт) 22:08
Откуда: Литва

Сообщение Max! » 08.04.2003 (Вт) 15:49

Да пробовал и private компилятор всеравно выдает эту ошибку :

"Only comments may appear after End Sub, End Function, or End Property" Что Это Такое?? :evil: :x
Max!

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 08.04.2003 (Вт) 15:53

Это от того, что декларация должна идти в самом начале кода.

Max!
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 502
Зарегистрирован: 03.04.2003 (Чт) 22:08
Откуда: Литва

Сообщение Max! » 08.04.2003 (Вт) 15:57

СПОСИБО!!! Все работает! :wink:
Max!

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 08.04.2003 (Вт) 16:03

Ну наконец-то! :P


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33

    TopList