[ mish_ns @ 10.11.2008. 16:41 ] @
Pozdrav!
Da li je moguce da se kompletna forma razvuce na A4 stranicu i kako.
Kada stampam pomocu PrintForm, sve mi se odstampa do polovine stranice....

[ Aleksandar Vasic @ 10.11.2008. 21:30 ] @
ja sam to pokusavao i nikada nisam uspeo, pa sam resio sa Printer.CurrentX i Printer.CurrentY jedino je problem sto za sav tekst moras da podesavas poziciju
[ Blue82 @ 11.11.2008. 11:23 ] @
Meni uopste nije jasno sta ti ustvari zelis? Kako mislis da razvuces formu da ti stane na ceo list? Na cega bi to licilo ako bi ti ono sto stane na pola strane razvukao na citAVU? Sve bi se izoblicilo, izduzilo i mogu samo da zamislim kako bi izgledalo. A ako bas ne zelis da prihvatis da koristis printer.curentx i printer.curenty onda ti preostaje samo jedno a to mozes koristiti samo ako ce ta aplikacija da radi samo kod tebe kuci. Onda lepo desni klik na desktop--properties--settings pa povecaj rezoluciju pa ce ti se veci deo forme videti na ekranu i samim ti ces i odsstampati vise mada je to zaista glupa i neefikasna metoda. Nego lepo stavi jedan picturebox na formu, razvuci je visinu i sirinu da odgovara dimenziji A4 papira pa kucaj.
Code:

Picture1.AutoRedraw = True
Picture1.CurrentX = 500
Picture1.CurrentY = 2000
Picture1.Print "TEXT"
Picture1.CurrentX = 1500
Picture1.CurrentY = 3000
Picture1.Print "TEXT"


isprobaj ovo i imaces cak i lep printprewiev pre stampanja pa vidis sta tacno pravis
posle kada hoces to sto vidis da odstampas dodas red
Code:

Printer.PaintPicture Picture1.Image, 0, 0, Picture1.Width, Picture1.Height, 0, 0, Picture1.Width, Picture1.Height, vbSrcCopy
Printer.EndDoc

i to je to pa uzivaj, videces da je mnogo lepse i da imas bolju kontrolu

ovo 5000 i 2000 su ti pozicije po x i y osi u twipsima. (567 twips-a = 1 cm). Ako ne zelis u twipsima nego bi npr da ti skala bude u cm samo na pocetku koda upisi
Code:

Picture1.Scalemode = vbcentimeters

i skala ce ti biti u cm
onda ces umesto 500 i 2000 npr stavljati 5 i 20 sto ce ti biti 5 cm desno i 30 cm dole. Milim da sam ti pomogao. Probaj pa zakljuci sta je bolje resenje. Pozdrav!

Eh da... isto tako menjas i font(velicinu debljinu itd...)
Kazes Picture1.Font=15
Ustvari samo ukucas picture1. i on ce ti ponuditi sta sve mozes menjati pa ces naci i ostale stvari vezane za font.


[Ovu poruku je menjao Blue82 dana 11.11.2008. u 19:35 GMT+1]

[Ovu poruku je menjao Blue82 dana 11.11.2008. u 19:36 GMT+1]

[Ovu poruku je menjao Blue82 dana 11.11.2008. u 19:36 GMT+1]
[ mish_ns @ 11.11.2008. 16:29 ] @
Ok...probacu tu varijantu...za sad sam se snasao...
Nisam se dobro izrazio, ne "razvuci", nego "zumirati" preko cele a4 strane...
Problem je sto ima oko 40-tak labela, 50 text box-ova linije i ostalo...i sve treba da stampam.
To je neki formular...treba ga odmah nakon ukucavanja podataka odstampati...
Hvala u svakom slucaju!!!!
[ Blue82 @ 11.11.2008. 18:28 ] @
Pa i to se resava jednostavno.
npr...
Code:

picture1.curentx=text1.left
picture1.curenty=text1.top
picture1.print text1.text


ovim kodom si rekao da na papiru na lokaciji na kojoj se nalazio textbox upise to sto pise u njemu. I dobices identicnu formu.
za liniju koristis
Code:

picture1.line(0,0)-(5000,4000)



Moze se desiti da nesto od ovoga ne radi jer kucam iz glave pa mozda ima neki mali propist a ako imas problema sa nekom linijom koda napisi je pa cemo ispraviti. U sustini treba da je sve ok.

U prvoj zagradi su ti koordinate prve tacke u drugoj druge i linija koju ces dobiti povezuje te 2 tacke.

Ako imas neke podatke da stampas tabelarno jede ispod druge neces milion puta pisati koliko je curentX i curentY nego ih stavis u neku for petlju pa svaki put kada prodje jednu for putanju na njenom kraju dodajes za koliko da se poveca jedan red, znaci picture1.curenty=picture1.curentY+razmak_izmedju_redova
A za taj razmak stavis neki broj, npr 400 i on ce ti podatke pisati jedne ispod drugog. Malo masete, i kada probas osnovno dalje ce ti se kazati samo , samo da shvatis kako to funkcionise.
[ mish_ns @ 12.11.2008. 18:44 ] @
Ovo poslednja ideja je najbolja za sad...poceo sam tako i dobro je za sad...
Hvala...
[ pega.cello @ 13.11.2008. 23:54 ] @
Mislim da će ti ovaj kod pomoći da odštampaš ceo format A4, a ne samo njegov jedan deo.

PrintForm metod štampa samo delove obrasca koji su prikazani na ekranu. Naredni deo demonstrira kako odštampati obrazac koji je na bilo koji način veći od ekrana, tj. kada je prikazan samo jedan njegov deo (deo obrasca).

Ako treba odštampati obrazac koji je veći od ekrana, onda kontrole na obrascu moraju biti postavljene u kontrolu PictureBox. U ovom slučaju štampač će štampati sve bitmape (kontrole izražene u bitovima), umesto zarobljene slike obrasca na ekranu (šta, u stvari PrintForm metoda čini).

Pošto se bitmapa (slika) kontrole PictureBox čuva u pomoćnoj memoriji, možemo pristupiti svim bitmapama unutar same kontrole PictureBox bez obzira šta je prikazano na ekranu.

Napomena: Visinu obrasca moramo podesiti na 11 inča. Ako se traži neka druga veličina papira, kao na primer 8.5 X 14 inča, podesićemo promenljivu sTall na traženu vrednost – 14. Napomenimo još da su sve vrednosti u tvipovima (engl. twips), zato što su tvipovi difoltni model veličine obrasca. Ako menjamo svojstvo ScaleMode, moramo pažljivo promeniti sve vrednosti.


Primer štampanja obrasca većeg od ekrana:

1. Startujemo nov StandardEXE projekat u Visual Basicu (podrazumevajući obrazac po difoltu je Form1).
2. Dodelimo dve kontrole PictureBox u obrazac Form1 (izbegnućemo crtanje druge kontrole PictureBox unutar prve
zato što takav akt čini drugu kontrolu PictureBox članom prve. Umesto toga, postavićemo početnu tačku druge
kontrole PictureBox levo od početne tačke prve kontrole PictureBox).

3. Desni klik na Picture2 i izaberemo SendToBack.
4. Dodamo kontrole koje želimo u Picture1. Picture2 ostavljamo praznu.
5. Dodamo sledeći kod u oblast za deklarisanje:


Private Const twipFactor = 1440
Private Const WM_PAINT = &HF
Private Const WM_PRINT = &H317
Private Const PRF_CLIENT = &H4& ' Draw the window's client area.
Private Const PRF_CHILDREN = &H10& ' Draw all visible child windows.
Private Const PRF_OWNED = &H20& ' Draw all owned windows.

Private Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long


6. U proceduru komandnog dugmeta ili stavke Print menija File (zavisno od toga šta odaberemo da štampa naš
projekat) unesemo koordinate Top i Left kontrola koje smo postavili u kontrolu Picture1 – npr:

Private Sub mnuFilePrint_Click ()
Dim sWide As Single, sTall As Single
Dim rv As Long

Me.ScaleMode = vbTwips ' default
sWide = 8.5
sTall = 14 ' or 11, etc.
Me.Width = twipFactor * sWide
Me.Height = twipFactor * sTall

With Picture1
.Top = 0
.Left = 0
.Width = twipFactor * sWide
.Height = twipFactor * sTall
End With

With Picture2
.Top = 0
.Left = 0
.Width = twipFactor * sWide
.Height = twipFactor * sTall
End With

With Text1
.Left = 9496
.Top = 2097.9
End With

With Text2
.Left = 9496
.Top = 4557.9
End With

Me.Visible = True
DoEvents

Picture1.SetFocus
Picture2.AutoRedraw = True
rv = SendMessage(Picture1.hwnd, WM_PAINT, Picture2.hDC, 0)
rv = SendMessage(Picture1.hwnd, WM_PRINT, Picture2.hDC, _
PRF_CHILDREN + PRF_CLIENT + PRF_OWNED)
Picture2.Picture = Picture2.Image
Picture2.AutoRedraw = False

CommonDialog1.ShowPrinter
Printer.Print ""
Printer.PaintPicture Picture2.Picture, 0, 0
Printer.EndDoc

Napomena: Svojstva Height i Width ne možemo menjati kodom već samo direktno u prozoru svojstava. Kako vidimo, osnovnom kodu smo dodali kod za koordinate dve kontrole TextBox.




[Ovu poruku je menjao pega.cello dana 14.11.2008. u 02:01 GMT+1]

[Ovu poruku je menjao pega.cello dana 15.11.2008. u 15:46 GMT+1]

[Ovu poruku je menjao pega.cello dana 15.11.2008. u 19:27 GMT+1]

[Ovu poruku je menjao pega.cello dana 15.11.2008. u 19:31 GMT+1]