webForumDet fria alternativet

anropa printer från koden

.NET

11 svar · 380 visningar · startad av theguru

Medlem sedan juli 2000411 inlägg
Frågan#1

Hej!

kan man när man använder printer.print ange att en annan printer än användarens default printer ska användas?

Medlem sedan okt. 20023 030 inlägg
#2

Du kan visa en Print-ruta där man väljer skrivare, m.m. Lägg till Microsoft Common Dialog som Component (Project > Components), lägg till en sådan på formuläret, och använd nedanstående kod INNAN du börjar använda Printer.Print.

CommonDialog1.ShowPrinter

Observera att du måste byta CommonDialog1 mot det namnet din CommonDialog-kontroll har.

Medlem sedan juli 2000411 inlägg
#3

jag skulle vilja att avändaren inte behövde tänka på det.
Jag vill att programmet skalll printa till en viss printer oavsett vilken som är satt att var default.

Nån som vet hur man gör

Medlem sedan okt. 20023 030 inlägg
#4

Hur ska koden välja skrivare då? Det går ju såklart att lösa men ska den välja efter skrivarnamn eller hur?

Om användaren inte ska behöva tänka på det, hur vet denne då vart pappret kommer hamna?

R// Ska den välja en slumpvist vald skrivare? :q

Medlem sedan juni 20022 599 inlägg
#5

Alla printrar finns i en collection Printers om du har sparat undan användarens val av skrivare så finns det flera möjligheter:

    Dim p As Printer
    For Each p In Printers
        If p.DeviceName = <ett undansparat skrivarnamn> Then
            Set Printer = p
        End If
    Next

eller om du sparat undan indexnumret:

   Set Printer = Printers(i)
Medlem sedan juli 2000411 inlägg
#6

verkar fungera fint!

Medlem sedan juli 2000411 inlägg
#7

finns det nåt sätt använda CommonDialog1.ShowPrinter på
utan att den sätter den som clientens default sida?
utan bara använder den skrivaren man annger i print objektet

Medlem sedan juni 20022 599 inlägg
#8

Vet inte. Men varför använda CommonDialog1.ShowPrinter öht? Gör ett eget inställningsformulär som visar alla objekt i Printers (se ovan) och låter användaren kryssa i vilken standardsskrivare han vill ha i ditt program. Hans val sparar du sen i registret eller ini-fil.

Medlem sedan okt. 20023 030 inlägg
Medlem sedan juli 2000411 inlägg
#10

tacksam för fler ideer om detta ;-)

Medlem sedan juni 20022 599 inlägg
#11

Är inte säker på att jag förstår problemet, men:

1. Du sätter programmets standardskrivare när programmet startar:

dim programmetsstandardskrivare as printer
Set programmetsstandardskrivare = Printers(<ett undansparat index>)

2. Du smäller upp printer-dialogen för att ge användaren möjlighet att ändra printerinställningar för godtycklig skrivare.

3. När dialogen stängs så sätts Printer till den skrivare användaren markerade. Men detta spelar ingen roll för vår del eftersom vi skriver ut via programmetsstandardskrivare. Och om vi tvunget vill skriva ut via Printer så kan vi ju alltid ställa tillbaks den:

Set Printer = programmetsstandardskrivare 
Printer.Print
' osv ..
Medlem sedan dec. 20001 inlägg
#12

Jag har samma problem som theguru. Jag har ett webformulär som går till en komponent som ska skriva ut informationen från formuläret på en av tre olika skrivare i nätverket.

Hur sätter man i koden vilken skrivare som ska skriva ut utan några dialogrutor eller liknande för användaren? Dessutom vill jag inte påverka användarens defaultskrivare eftersom det bara är en enstaka utskrift som sker när man fyllt i formuläret.

Jag vill kunna skriva något som fungerar som det här borde göra:

select case selPrinter
case 1
Set Printer = "\\server\printer1"
case 2
Set Printer = "\\server\printer2"
case 3
Set Printer = "\\server\printer3"
end select
osv..

och då ska den veta vilken skrivare som ska skriva ut mitt dokument. Hittills kommer det bara ut på användarens defaultskrivare och jag vet inte hur jag ska gå vidare.

254 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)