Arama butonu
Bu konudaki kullanıcılar: 1 misafir
17
Cevap
849
Tıklama
0
Öne Çıkarma
VB 6.0 da print out sorunu
A
20 yıl
Yüzbaşı
Konu Sahibi

Arkadaşlar,Visual basic projemde formdan print out almak istiyorum, "form1.printform" Kodunu yazdım error weriyo:( print almam için ne yapmam gerek

teşekkürler

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



P
20 yıl
Teğmen

Windows Api si kullanarak daha sonra görüntüyü capture etmelisn kullanacağın api;

PrintWindow Lib "user32.dll" (ByVal _
hwnd As IntPtr, ByVal hdcBlt As IntPtr, ByVal nFlags As _
UInt32) As Boolean



A
20 yıl
Yüzbaşı
Konu Sahibi

yeniyim bu konuda
ayrıntılı bi açıklama yaparsan sewinirim,teşekkürler şimdiden


Bu mesaja 1 cevap geldi.
P
20 yıl
Teğmen

işletim sistemin ne çünkü ona göre api bulacağım.


Bu mesaja 1 cevap geldi.
A
20 yıl
Yüzbaşı
Konu Sahibi

win xp pro service pack 2
api nasıl bulunucak ki?


Bu mesaja 1 cevap geldi.
P
20 yıl
Teğmen

Sana ilk verdiğim Api PrintWindow Xp çalışıyoe ama 2000'lerde çalışmuyor ondan sordum...

http://support.microsoft.com/default.aspx?scid=kb;en-us;85978

Bu sayfayı incele tam işine yarayacak.
Ayrıca captute fonksiyonu;


Private Declare Function PrintWindow Lib "user32.dll" (ByVal _
hwnd As IntPtr, ByVal hdcBlt As IntPtr, ByVal nFlags As _
UInt32) As Boolean
Dim screenGrab As Bitmap

Private Sub CaptureScreen()
'captures Form1 into screenGrab
screenGrab = New Bitmap(Me.Width, Me.Height)
Dim g As Graphics = Graphics.FromImage(screenGrab)
Dim hdc As IntPtr = g.GetHdc
Form1.PrintWindow(Me.Handle, hdc, Nothing)
g.ReleaseHdc(hdc)
g.Flush()
g.Dispose()
'could just save the screenshot:
'screenGrab.save("c:\screenshot1")
End Sub


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button6.Click
CaptureScreen()

End Sub


Bu mesaja 1 cevap geldi.
A
20 yıl
Yüzbaşı
Konu Sahibi

ilk iki sub ı general decleration kısmına
diğerini print komut buttonuna yazıcaz sanırım
print buttonunda yazılı olan handles button6.click ne demek oluyo


Bu mesaja 1 cevap geldi.
P
20 yıl
Teğmen

Evet.

O da button6 da button1 olucak kodda button6 idi ilk kısmı düzeltmiştim fakat handle kısmında kalmış. Bu kodu .Net de yazdım onun için standard vb test etme şansım yok çünkü vb kullanmuyorum.


Bu mesaja 1 cevap geldi.
A
20 yıl
Yüzbaşı
Konu Sahibi

vb de olmuyo malesef
capturescreen diye prosedür fln tanımıyo
bunun çalıştığından emin misin


Bu mesaja 1 cevap geldi.
P
20 yıl
Teğmen

Api'yi çalıştırmuyor olmasın.

Sana gönderdiğim linki incelersen istediğin olur. Bana VB kurdutturma. 2 seneden beri ilişkimi kestim.



İ
20 yıl
Binbaşı

Form1.printform çalışması gerekir...

Bilgisayarınızda bir yazıcı yüklü durumdamı ? Eğer yok ise exception döndürür...

Eğer printer sız bir makinada çalışıyorsanız alakasız bir driver yükleyerek Yazıcı ekle kısmından Baskı önizleme özelliğini kullanabilirsiniz.





< Bu mesaj bu kişi tarafından değiştirildi irfanmatak -- 28 Temmuz 2005, 20:22:50 >
Bu mesaja 1 cevap geldi.
A
20 yıl
Yüzbaşı
Konu Sahibi

sevgili aspci79 dediğini düşündüm ve Form1.printform komutunu ewimdeki printerda kullandım
print yapmaya başladı ama soldan başlayarak sağ tarafı yarım print etti,ama en azından print out çıkardı
işyerimdeki printer ağdan kullanımda olan bi printer onda ise error wermişti,ne yapmalıyım sence?teşekkürler ilgine, sen de olmasan...


Bu mesaja 1 cevap geldi.
A
20 yıl
Yüzbaşı
Konu Sahibi

Yaa arkadaşlar,VB 6.0 da print yapamıyacağım anlaşılan
kimseden işe yarayan bi fikir halen alabilmiş diilim


Bu mesaja 1 cevap geldi.
İ
20 yıl
Binbaşı

quote:

Yaa arkadaşlar,VB 6.0 da print yapamıyacağım anlaşılan
kimseden işe yarayan bi fikir halen alabilmiş diilim


Kusura Bakmayın Baya yoğunum Söylediğim şekilde sorununuz demekki yazıcı driverından.
Fikir olarak belki yardım edebilir. :)

Öncelikle bir Beyaz form oluşturun ve boyutunu A4 olarak boyutlandırın.

Label yada text'leri yazı çıktısı şeklinde dizgi yapın form üzerine
Çıktı alıcağınız zaman gönderme yaparak printform yaparsınız...

yazdirform.text1 = form1.text1.text
yazdirform.text2 = form1.text2.text

...
yazdirform.printform

Derseniz direkt çıktı alırsınız...

Ağ yazıcısını bilgisayarınızda varsayılan yazıcı yaparsanız sorun ortadan kalkacaktır.


Bu mesaja 1 cevap geldi.
A
20 yıl
Yüzbaşı
Konu Sahibi

Sevgili aspci79; Form1.printform komutunun formun çıktısı için yeterli bi komut olacağını zannetmiyorum,sanırım api fln bulmak gerek,bu arada ağdaki printer benim default printer cnm
yardımcı olursan sevinirim,print butonuna basınca formun çıktısını almak istiyorum,çokkarmaşık bişey istemiyorum yane,kaçgündür çözebilmiş diilim


Bu mesaja 1 cevap geldi.
İ
20 yıl
Binbaşı

quote:

Orjinalden alıntı: asli

Sevgili aspci79; Form1.printform komutunun formun çıktısı için yeterli bi komut olacağını zannetmiyorum,sanırım api fln bulmak gerek,bu arada ağdaki printer benim default printer cnm
yardımcı olursan sevinirim,print butonuna basınca formun çıktısını almak istiyorum,çokkarmaşık bişey istemiyorum yane,kaçgündür çözebilmiş diilim



Ben eski dosyalama sistemleri ile hazırladığım projelerde tabii bu olay seneler önce olan bir olay anlattığım şekilde çıktı alabilmeniz gerekir. Görsel aktarmalarda bir miktar yavaşlık olur sadece onun dışında herhangi bir sorun yaşamazsınız. Sorun yaşıyorsanız bilgisayarınızda yada sisteminizle yazıcı arasında bir sorun olabilir ağ yazıcınız varsayılan olarak ayarlı ise bu şekilde düşündüm.

Fakat yukarıda anlattığım şekilde kullanım doğru kendim bizzat geçmişte kullandığım için eminim. Kod örneği yollasarsanız dahada fazla fikir üretebiliriz belki ama işlerim yüzünden söz veremiyorum maalesef.


Bu mesaja 1 cevap geldi.
A
20 yıl
Yüzbaşı
Konu Sahibi

Sence şu aşagıdaki komutlardan ne elde edilir? neyi nereye yazacağımı kararlaştıramadım,general declaretions kısmına mı yazılıcak?

Private Sub pd_PrintPage(ByVal sender As Object, _
ByVal e As System.Drawing.Printing.PrintPageEventArgs) _
Handles pd.PrintPage
e.Graphics.DrawImage(formImage, 0, 0)
pd.DefaultPageSettings.Landscape = True
End Sub
Private Sub GetFormImage()
Dim g As Graphics = Me.CreateGraphics()
Dim s As Size = Me.Size
formImage = New Bitmap(s.Width, s.Height, g)
Dim mg As Graphics = Graphics.FromImage(formImage)
Dim dc1 As IntPtr = g.GetHdc
Dim dc2 As IntPtr = mg.GetHdc
' added code to compute and capture the form
BitBlt(dc2, 0, 0, Me.ClientSize.Width, Me.ClientSize.Height, dc1, 0, 0, 13369376)
g.ReleaseHdc(dc1)
mg.ReleaseHdc(dc2)
End Sub

Private Sub Form1_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
' create an instance of the PrintDocument component
pd = New Printing.PrintDocument
Me.StartPosition = FormStartPosition.CenterScreen
pd.DefaultPageSettings.Landscape = True
End Sub

Private Sub Print_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs) _
Handles Print.Click
GetFormImage()
pd.Print()
End Sub


Bu mesaja 1 cevap geldi.
İ
20 yıl
Binbaşı

Şimdi Bahsettiğimizi şeyler çok farklıymış bir kere :)

Kodları fazla analiz edemedim ama

formImage değişkenini Private deklare etmelisin çünkü farklı yordamlar tarafından kullanılıyor.

en üstteki subın dışında

private formImage as Variant // Örn.

Kod sanıyorum form üzerinde grafik oluşturup yazıyor. Birde bunu dene bakalım . !



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.