Set det har jeg sådan set forsøgt! Jeg har et fortrykt ark med nogle felter på. De samme felter har jeg i min form. Det hele skrives til printeren på denne måde:
Det sidder klokkerent på rette sted på arket, når jeg eksekverer det på min maskine, men kører jeg mit program på en anden maskine, med en anden printer rykker skidtet sig .
men måske er det på grund af at jeg forsøger at styre efter marginer, og de er jo forskellige fra printer til printer
Jeg får udskriften helt fin når jeg printer lokalt på min printer. Al indhold sidder korrekt på det fortrykte ark. Men tager jeg programmet og kører det på en anden computer med en anden printer, sidder det ikke længere korrekt. Det er det der er humlen i det
Så vidt jeg ved er CurrentX relativ til printmargin og IKKE parpirkant. Dvs. Printer.CurrentX = 0 placerer sig ved printmarginens kant og IKKE ved papirkanten. Så skifter man en til en printer med anden margin vil Printer.CurrentX = 0 placerer sig et andet sted i forhold til papirkanten, end den gjorde på den oprindelige printer...
Hvis man kunne aflæse hvor stor margin der er på den valgte printer, ville du få løst dit problem... Eller kunne angive koordinater relative til papirkanten...
Så har du gjort noget forkert. Det her virker perfekt (fra scb):
Printer.ScaleMode = 6 'Mål i mm Printer.FontName = "Arial" Printer.FontSize = 18 Printer.CurrentX = 50 Printer.CurrentY = 50 Printer.Print " Dette er en prøve "
Men problemet er jo, hvorfra de 50 mm bliver målt - som jeg forstår det, måles de fra Printermargin. Dvs. teksten kommer til at stå 50 mm + den aktuelle printers margin fra papirkanten :o(
Og Printermargin er ikke ens på alle printere. Så derfor må du finde en måde at få defineret hvor langt du er fra papirets KANT og ikke printermargin - hvordan ved jeg ikke :o(
Man kan hente oplysninger om den af brugeren valgt printer, bl.a hvilket fonte der er tilgænglig for den pågældende printer, jeg tror også at man kan hente hvad margen er sat til, og så er det jo til at regne på. -SCB
scb // Det er jo lige hvad jeg har brug for. Men hvordan f..... henter man de oplysninger.
Jeg har forsøgt mig med at trække printer.scaleheight fra A4 formatet (29,7cm), men det giver mig "kun" totalen af top og bundmargin. Ja så kunne man jo dele med 2, men da man ikke kan regne med at top og bundmargin er ens er det ikke videre brugbart.
Jeg har også leget lidt med Printer.ScaleTop. Der kan jeg rykke rundt på udskriften, men jeg ved jo stadig ikke hvilken printer. Fik det dog til at virke på 2 forskellige specifikke printere. Tjekkede på Printer.DeviceName, i det ene tilfælde skulle Printer.ScaleTop være -0.5 og i det andet 0 men igen..... det er nok ikke det smarteste.
Så hvis du har en idé til hvordan man får værdien for printerens margin hentet er mere end velkommen til at smide det her :-)
Meget kreativt, det med (29,7 - scalehight) / 2. Men som sagt kan man ikke vide om det er rigtigt, hvis topmargin <> bundmargin.
Det eneste jeg kunne bidrage med her var at oplyse om, at du bliver nødt til at kende størrelsen på margin, eller finde en måde at måle fra papirkant. HVORDAN ved jeg ikke. Jeg skriver kun dette indlæg, så du kan se, at det ikke er fordi jeg har glemt dig, men fordi jeg ikke kan hjælpe mere :o( Meeeeen mon ikke nogle andre kan? Good luck!
Hmmm. Tror desværre man er nødt til at kende den specifikke printer der skal skrives til, eller ihvertfald printertypen, hvis alle bare havde en HP ville det virke, meeeeen....
Jeg vil dele points ligeligt mellem jer som tak for inputs
//Martin kan du ikke smide et svar så du også kan få nogle point.
Jeg smider en kommentar hvis jeg skulle falde over en løsning :-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.