Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: VN.NET Formin tulostus, vinkkejä?

Sivun loppuun

Kisälli [19.10.2004 11:58:32]

#

Mikä olisi viisas ratkaisu formin tulostukseen? Olisko jollain heittää jotain testattua koodin pätkää malliksi tai linkkiä, missä olisi hyvät ohjeet?

Olen koettanut saada homman hoidettua tallentamalla näytön bittikartaksi -> tulostaa sen, mutta jälki jää epäselväksi ja muokkaamalla e.graphicsia menee tulostimen asetukset vain sekaisin?!?

Formissa (siis ikkunassa) on ainoastaan muuan tekstikenttä ja pari kuvaa, jotka pitäisi saada paperille. Kuvan kyllä osaan tulostaa ja tekstinkin - vain erikseen, mutta kun ne pitäisi saada samalle paperille.

tnb [19.10.2004 20:15:26]

#

Laitoin ratkaisun putkan vinkkeihin:

https://www.ohjelmointiputka.net/koodivinkit/24566-vb-net-formin-tulostaminen

Kisälli [20.10.2004 15:21:53]

#

Kiitokset!

Tuo alkaa jo näyttämään paremmalta, vielä olisi pari kysymystä;

Mitenkäs pystyn määrittämään tulostusalueen? Tuollahan tulee nyt tulostettavaksi koko formi reunoineen ja haluaisin ainoastaan formin sisällön ilman reunoja sekä valikkoja. (itseasiassa minulla on tuolla tulostettavalla formilla välilehtiä, joista pitäisi yhden välilehden (Tabpage) sisältö ilman välilehtivalikkoa (Tabcontrol).

tnb [20.10.2004 18:19:32]

#

' Copy the form's client area
BitBlt(targetDC, _
       0, 0, me.ClientRectangle.Width, me.ClientRectangle.Height, _
       sourceDC, _
       me.ClientRectangle.X, me.ClientRectangle.Y, _
       SRCCOPY)

lisäski noita dispose juttuja tuli turhaan kahdesti, jälkimmäinen OK.

Kisälli [21.10.2004 09:36:19]

#

Kiitän ja kumarran =)

Sain välilehdet tulostettavaksi kun vaihdoin noihin me.ClientRectangle tilalle tabpage (laitoinkohan perään vielä tuon .ClientRectangle - en muista nyt tarkkaan mutta kuitenkin..)

Lisäksi muokkaisin kokoa lisäämällä marginaaleihin kaksi muuttujaa, jotta kohde mahtuu tulostusalueelle.

Mitä ja mihin kohtaan koodia pitäisi lisätä, että saisi tulostimen asetuksista automaattisesti vaakatulosteen päälle?

BadSource [21.10.2004 11:11:57]

#

Aikaisemmissa VB:n versioissa tulosteen suuntaa muutetaan Printer.Orientation:lla. Kokeile katsoa jos sama tai vastaava löytyy myös DotNetin puolelta. Tuo suunnan vaihto kannattaa laittaa mahdollisimman alkuun, ennen kuin rupeat ohjaamaan mitään tavaraa tulostimelle, jolloin tulostusrajat tms. ilmoitetaan oikein, jos niitä tarvitsee tulostetta muotoillessaan.

'Nämä siis VB 6:lle
Printer.Orientation = vbPRORPortrait 'pysty
'tai
Printer.Orientation = vbPRORLandscape 'vaaka

tnb [21.10.2004 19:39:14]

#

Lisää tämä: MyDoc.DefaultPageSettings.Landscape = True

siis:

' If the user clicked OK, print the document.
If Result = DialogResult.OK Then
    ' This method returns immediately, before the print job starts.
    ' The PrintPage event will fire asynchronously.
    MyDoc.DefaultPageSettings.Landscape = True
    MyDoc.Print()
End If

Kisälli [25.10.2004 08:05:43]

#

Homma hoidossa - Kiitokset vielä!

Kisälli [26.10.2004 12:05:13]

#

Jaahans..

Tuli vielä muuan ongelma.

Edellä kuvatulla tavalla homma toimii ihan ok mustesuihku porttitulostimilla, mutta verkossa olevilla lasertulostimilla tulostaa vain 1/8 osan kuvasta ja herjaa paperikooksi väärää. A4 on siis tarkoituksena saada landscapena. Noissa verkkolasereissa landscape täytyy lisäksi laittaa erikseen tulostimen asetuksista eli "MyDoc.DefaultPageSettings.Landscape = True" ei toimi kuten pitäisi -> tulostin menee kokonaan jumiin. Landscapen asettamalla kirjoittimen asetuksista saa tulostettua sitten vain 1/8 osan alueesta.

Miten tuon paperikoon voi pakottaa A4:ksi ja onko tässä nyt jotain muuta mahdollista vikaa?

Kisälli [27.10.2004 08:26:54]

#

Joo, edellisen viestin saa unohtaa.

Vika oli yllättäin tulostimien ajureissa eli koodi on täysin toimiva!


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta