Forum Coders' city Strona Gwna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UytkownicyUytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj si, by sprawdzi wiadomociZaloguj si, by sprawdzi wiadomoci   ZalogujZaloguj 

Potrzebuj szybkiej odpowiedzi na moje pytanie... Zasady

[VB6] Wirtualna kartka: wydruk ListBox



 
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Visual Studio: C#, VB, VC++, …
Zobacz poprzedni temat :: Zobacz nastpny temat  
Autor Wiadomo
TomPIOr
Go





PostWysany: Sro Sty 11, 2017 12:12 pm  OP    Temat postu: [VB6] Wirtualna kartka: wydruk ListBox Odpowiedz z cytatem Pisownia

Dzie dobry

Prbuj wydrukowa List1 na wirtualnej kartce lecz niestety si nie drukuje.Prosz o pomoc rozwizaniu problemu.Czy jest wogle moliwo wydruku list1

Kod:
Private Sub CommandButton2_Click()
'parametry wydruku - poszukaj co do czego jest ;)

Printer.Orientation = 1
Printer.ColorMode = 1
Printer.PrintQuality = 3
Printer.DrawWidth = 1
Printer.DrawStyle = 0
Printer.ScaleLeft = 0
Printer.ScaleTop = 0
Printer.ScaleWidth = 4700
Printer.ScaleHeight = 6600

'czcionka
Printer.Font = "Tahoma"
Printer.FontSize = 13
Printer.FontBold = False


Printer.CurrentX = 288
Printer.CurrentY = 844
Printer.Print Label1

'czcionka
Printer.Font = "Tahoma"
Printer.FontSize = 13
Printer.FontBold = False


Printer.CurrentX = 288
Printer.CurrentY = 1090
Printer.Print Label2

Printer.Font = "Tahoma"
Printer.FontSize = 17
Printer.FontBold = False

Printer.CurrentX = 288
Printer.CurrentY = 1090
Printer.Print ListBox1

Printer.Font = "Tahoma"
Printer.FontSize = 17
Printer.FontBold = False
Printer.CurrentX = 2350
Printer.CurrentY = 1490
Printer.Print TextBox1.Text




Printer.Font = "Tahoma"
Printer.FontSize = 7
Printer.FontBold = False
Printer.CurrentX = 200
Printer.CurrentY = 6400
Printer.Print "raport  wygenerowano automatycznie"



'koniec wydruku
Printer.EndDoc
End Sub
Powrt do gry
Sousuke



Doczy: 19 Lis 2005
Posty: 532
Skd: Wrocaw

PostWysany: Sro Sty 11, 2017 1:51 pm      Temat postu: Odpowiedz z cytatem Pisownia

Bo musisz wycign elementu z listboxa do jakiej listy i dopiero to drukowa a nie obiekt.
_________________
Blog na temat programowania w .NET
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Odwied stron autora Numer GG
TomPIOr
Go





PostWysany: Sro Sty 11, 2017 3:08 pm  OP(?)    Temat postu: Odpowiedz z cytatem Pisownia

czy mgby kto podpowiedzie jak to zrobi
Powrt do gry
yaqq



Doczy: 11 Lut 2014
Posty: 185
Skd: Francja

PostWysany: Sro Sty 11, 2017 4:36 pm      Temat postu: Odpowiedz z cytatem Pisownia

musisz przejsc przez elementy listy i kazdy z nich wydrukowac:
albo - jak mowi sousuke - najpierw je gdzies "wlozyc" (i tak w petli)
albo od razu drukowac

petle robisz tak:
Kod:

' petle robisz tak
for x As Integer = 0 To ListBox1.Items.Count - 1
   ' a do elementow listy odwolujesz sie tak:
   ' ListBox1.Items(x).ToString
   ' oczywiscie musisz cos z nimi robic, samo nie zadziala, dlatego dalem ' komentarz
next


_________________
Obecnie we Francji/Maroko, pracuj nad rnymi projektami oraz szukam pracy - niekoniecznie jako programista, a nawet wrcz przeciwnie.
Gdzie? Francja, Emiraty Arabskie, Arabia Saudyjska, Maroko, inne do dyskusji.
Polska? Chtnie wrc, z pensj minimum 1/2 tego co teraz i 47 dniami urlopu. Do negocjacji.
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
TomPIOr
Go





PostWysany: Sro Sty 11, 2017 5:29 pm      Temat postu: Odpowiedz z cytatem Pisownia

Doszedem do drukowania na wirtualnej kartce danych z listy ale pojawi si problem gdy dane z drugiej ptli (kolumny 2) po pierwszym wierszu dane drukuj si od pocztku marginesu a nie jak mam ustawion pozycj.(Printer.CurrentX =450)
Moe kto pomc jak zrobi by dane z drugiej ptli drukoway si zawsze od Printer.CurrentX =450

Kod:

Printer.Font = "Tahoma"
Printer.FontSize = 10
Printer.FontBold = False
Printer.CurrentX = 0
Printer.CurrentY = 2654

For j = 0 To ListBox1.ListCount - 1
       Printer.Print ListBox1.List(j, 0)
Next

Printer.Font = "Tahoma"
Printer.FontSize = 10
Printer.FontBold = False
Printer.CurrentX = 450
Printer.CurrentY = 2654

For k = 0 To ListBox1.ListCount - 1
       Printer.Print ListBox1.List(k, 1)
Next


Od moderatora: interpunkcja! marcin_an
Powrt do gry
yaqq



Doczy: 11 Lut 2014
Posty: 185
Skd: Francja

PostWysany: Sro Sty 11, 2017 9:39 pm      Temat postu: Odpowiedz z cytatem Pisownia

pomysl: masz petle i chcesz zeby kazda kolejna linijka z listboxa drukowala sie na X=450...
jedna prosta rzecz do zrobienia (choc nie najpiekniejsza moze)

_________________
Obecnie we Francji/Maroko, pracuj nad rnymi projektami oraz szukam pracy - niekoniecznie jako programista, a nawet wrcz przeciwnie.
Gdzie? Francja, Emiraty Arabskie, Arabia Saudyjska, Maroko, inne do dyskusji.
Polska? Chtnie wrc, z pensj minimum 1/2 tego co teraz i 47 dniami urlopu. Do negocjacji.
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
samolot



Doczy: 26 Sty 2006
Posty: 8050
Skd: Toru

PostWysany: Sro Sty 11, 2017 10:24 pm      Temat postu: Odpowiedz z cytatem Pisownia

1. Do TomPIOr: co to jest u ciebie wirtualna kartka? Drukujesz na rzeczywistej kartce? Jeli tak, to dlaczego nazywasz j wirtualn?

2. Yagg napisa: ListBox1.Items(x).ToString
W VB6 ToString nie zadziaa, bo to jest funkcja z VB.NET :)

3.
TomPIOr napisa:
po pierwszym wierszu dane drukuj si od pocztku marginesu a nie jak mam ustawion pozycj.(Printer.CurrentX =450)

Kade polecenie Print dla drukarki musi mie przed jego uyciem jawnie ustawione parametry CurrentX i CurrentY. Masz to ustawione w wierszach 15 i 16. Dlatego w ptli pierwsze polecenie Print w wierszu 19 drukuje w miejscu, dla ktrego miesce druku ustalie w wierszach 15 i 16. Aby po kadym nastpnym obrocie ptli wydruk znajdowa si tan, gdzie ty chesz, to powiniene miedzy wiersze 19 i 20 wstawi nowe parametry CurrentX i CurrentY. Jeli nie s one za kadym razem jawnie podane, to w VB6 drukarka domylnie drukuje od nowej linii.

_________________
Nie zadawaj bezcelowych pyta / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Wylij email
Knight Lore''FC



Doczy: 27 Maj 2005
Posty: 194
Skd: z DOMU

PostWysany: Sro Sty 11, 2017 11:25 pm      Temat postu: Odpowiedz z cytatem Pisownia

Zmiana Twojego kodu:
Kod:
Printer.Font = "Tahoma"
Printer.FontSize = 10
Printer.FontBold = False

Printer.CurrentY = 2654
For j = 0 To ListBox1.ListCount - 1
       Printer.CurrentX = 0
       Printer.Print ListBox1.List(j, 0)
Next j

Printer.CurrentY = 2654
For k = 0 To ListBox1.ListCount - 1
       Printer.CurrentX = 450
       Printer.Print ListBox1.List(k, 1)
Next k


Moesz to zrobi troche inaczej, jezeli chcesz zobaczyc podglad
Dodaj na Forme obiekt Picture1 i przycisk Command1
Kod:

Private Sub Command1_Click()

Dim j As Integer, k As Integer
Dim Gdzie As Object
Dim Podglad As Boolean

' 'ustaw gdzie chcesz drukowac
' 'na obiekcie Picture (podglad)
' Set Gdzie = Form1.Picture1
' Podglad = True
'
' 'na Drukarke
' Set Gdzie = Printer
' Podglad = False

Set Gdzie = Form1.Picture1
Podglad = True

'ustaw parametry czcionki
Call Czcionka_Print(Gdzie, 10, "Tahoma", False, False, False)

'ustaw wspolrzedne druku Y
Gdzie.CurrentY = 2654

'drukuj zawartosc listy
For j = 0 To ListBox1.ListCount - 1
        'ustaw wspolrzedne druku X
        Gdzie.CurrentX = 0
        Gdzie.Print ListBox1.List(j, 0)
Next j

'JEZELI chcesz zmienic parametry czcionki to zminen je, jezeli nie chcesz - to nie dodawaj tej lini (bada uzyte ostatnie ustawienia czcionki):
Call Czcionka_Print(Gdzie, 15, "Arial", False, False, False)

'ustaw wspolrzedne druku Y
Gdzie.CurrentY = 2654

'drukuj zawartosc listy
For k = 0 To ListBox1.ListCount - 1
        'ustaw wspolrzedne druku X
        Gdzie.CurrentX = 1450
        Gdzie.Print ListBox1.List(k, 1)
Next k

'jezeli bylo na drukarke to wykonaj EndDoc
If Podglad = False Then
    Gdzie.EndDoc
End If

End Sub

Sub Czcionka_Print(Gdzie As Object, Wielkosc As Integer, rodzajFontu As String, Gruba As Boolean, Pochyla
As Boolean, Podkreslona As Boolean)
'--------------------------------
'procedura zmiany czcionki
'--------------------------------

    Gdzie.FontTransparent = True
    Gdzie.Font = rodzajFontu
    Gdzie.Font.Charset = 238 ' kodowanie znakow 238=europa srodkowa, 0=zachodni
    Gdzie.FontSize = Wielkosc
    Gdzie.FontBold = Gruba
    Gdzie.FontItalic = Pochyla
    Gdzie.FontUnderline = Podkreslona
    Gdzie.ForeColor = 0
End Sub



Lub jeszcze lepiej:

Kod:

Private Sub Command1_Click()

'wydruk
Call Drukuj(Printer, False)

'lub podglad wydruku
Call Drukuj(Form1.Picture1, True)

End Sub


Sub Drukuj(Gdzie As Object, Podglad As Boolean)
'----------------------
'procedura wydruku
'----------------------

Dim j As Integer, k As Integer

'ustaw parametry czcionki
Call Czcionka_Print(Gdzie, 10, "Tahoma", False, False, False)

'ustaw wspolrzedne druku Y
Gdzie.CurrentY = 2654

'drukuj zawartosc listy
For j = 0 To ListBox1.ListCount - 1
        'ustaw wspolrzedne druku X
        Gdzie.CurrentX = 0
        Gdzie.Print ListBox1.List(j, 0)
Next j

'JEZELI chcesz zmienic parametry czcionki to zminen je, jezeli nie chcesz - to nie dodawaj tej lini:
Call Czcionka_Print(Gdzie, 15, "Arial", False, False, False)

'ustaw wspolrzedne druku Y
Gdzie.CurrentY = 2654

'drukuj zawartosc listy
For k = 0 To ListBox1.ListCount - 1
        'ustaw wspolrzedne druku X
        Gdzie.CurrentX = 1450
        Gdzie.Print ListBox1.List(k,1)
Next k

'jezeli bylo na drukarke to wykonaj EndDoc
If Podglad = False Then
    Gdzie.EndDoc
End If

End Sub


Sub Czcionka_Print(Gdzie As Object, Wielkosc As Integer, rodzajFontu As String, Gruba As Boolean, Pochyla As Boolean, Podkreslona As Boolean)
'--------------------------------
'procedura zmiany czcionki
'--------------------------------

    Gdzie.FontTransparent = True
    Gdzie.Font = rodzajFontu
    Gdzie.Font.Charset = 238 ' kodowanie znakow 238=europa srodkowa, 0=zachodni
    Gdzie.FontSize = Wielkosc
    Gdzie.FontBold = Gruba
    Gdzie.FontItalic = Pochyla
    Gdzie.FontUnderline = Podkreslona
    Gdzie.ForeColor = 0
End Sub



Pamitaj, aby ZAWSZE dodawac opis co w danym miejscu robi program. Jak zrobisz wiele programow, to bedziesz sam sobie dziekowal za wskazowki w zrozumieniu "co miales na mysli" i co w danym miejscu robi program...
I lepiej dla czytelnoci kodu zamykaj petle FOR...NEXT litera, ktora to dotyczy.
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
TomPIOr
Go





PostWysany: Czw Sty 12, 2017 9:48 am      Temat postu: Odpowiedz z cytatem Pisownia

Dzikuje za pomoc i zaangaowanie
Powrt do gry
Wywietl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Visual Studio: C#, VB, VC++, … Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Moesz pisa nowe tematy
Moesz odpowiada w tematach
Nie moesz zmienia swoich postw
Nie moesz usuwa swoich postw
Nie moesz gosowa w ankietach
Moesz dodawa zaczniki na tym forum
Moesz pobiera pliki z tego forum




Debug: strone wygenerowano w 0.03616 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |