Toon posts:

[vb6] Printen duurt lang, dialog weergeven?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb in VB6 een programmaatje gemaakt, en dat print een plaatje (een grafiek) uit:
code:
1
Printer.PaintPicture .Picture, .Left - 500, .Top - 500, .Width * 2.65, .Height * 2.65

Punt is nu dat dit erg lang duurt (afhankelijk van de PC-snelheid, maar toch erg lang), dus wil ik er graag een venstertje bij hebben van "Bezig met printen, een ogenblik geduld a.u.b." en het liefst zelfs nog met een statusbarretje om de gebruiker gerust te stellen dat er wel degelijk iets gebeurt.

Punt is nu, dat het niet lastig is om te kijken wanneer de gebruiker klikt op de knop "Printen" zodat het schermpje weergegeven kan worden. Nee, het is lastig om te bepalen wanneer het figuur klaar is met printen (dus eigenlijk in de windows spooler staat) en wanneer mijn venstertje dus moet verdwijnen.

Hoe kan ik dit bepalen? Als ik dit doe:
code:
1
2
3
4
private sub cmd_print_click()
frm_bezigmetprinten.show vbmodal, frm_printvoorbeeld
Printer.PaintPicture .Picture, .Left - 500, .Top - 500, .Width * 2.65, .Height * 2.65
frm_bezigmetprinten.hide

Dan laat mijn frm_printvoorbeeld het dialoogboxje frm_bezigmetprinten zien, en wacht het vervolgens totdat het dialoogboxje 'klaar' is (dus gesloten wordt). Hij moet op de achtergrond door gaan met zijn taken: het printen. En als ie klaar is met printen mag ie de frm_bezigmetprinten hiden.
Ik moet echter (omdat het een DLL is die gebruikt wordt in allerlei applicaties) wél de property vbmodal gebruiken :(

Hellup!

Ps: Het liefst zou ik toch ook zo'n statusbar erin hebben, maar dat wordt zeker nog véél lastiger?

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 09:31

Crazy D

I think we should take a look.

Progressbar is zinloos aangezien jij maar 1 opdracht geeft, nl. de PaintPicture. VB doet de rest voor je, en daar kun je verder niks mee... en tonen met vbModal ben je zelf ook al achter dat dat niet werkt ;)
Wat je zou kunnen proberen, een timer aanzetten, bezigmet-form tonen, en in het timer-event de timer weer stopzetten en gaan printen. Niet helemaal ideaal maar zo heel veel andere manieren zijn er niet... (je zou ook een event kunnen raisen vanuit de bezigmet-form, raisen in de form_activate).

Exact expert nodig?


Verwijderd

je kunt ook je window 'niet-modal' showen en hem dan met de API-call MoveWindow 'fakemodal' maken

heb net ffies gezocht : deze link claimed dat je de status van de printer WEL kunt uitlezen [url="http://www.merrioncomputing.com/Programming/PrintStatus.htm"]http://www.merrioncomputing.com/Programming/PrintStatus.htm[/url]