Det er ikke så enkelt når det er printeren du arbejder med. Pixels på en printer (printer.canvas) er afhængigt af hvilken font du vil skrive med. Fontopløsningen afgør hvor mange pixels der går på en centimeter/tomme, og er forskellig for hver fonttype.
De pixels du har på en skærm (f.eks. 1024x768) er ikke de samme som på en printer. Her er det suverænt fonten der er afgørende, og selvfølgeligt hvilken opløsning din printer kan skrive med. F.eks. vil en god Laser Printer måske skrive med en 600x600 opløsning.
For at kunne skrive i centimeter (beregne bredden af en tekst) skal du altså kende den pågældende fonts pixelopløsning og den opløsning printeren kan.
I printers unitten er der så vidt jeg husker også en "fonts" property. Dette er en stringlist der indeholder navnene på alle de fonts printeren understøtter. Samtidig kan du for hver af disse fonte (også via printers unittten) få oplyst hvilken opløsning den pågældende font har. Ud fra dette må du så beregne bredden af en tekst på din printer.
Desværre er det ikke så enkelt.
Hvis du derimod benytter et 3.parts program til udskrifter (f.eks. ReportPrinter Pro eller ReportBuilder) har du mulighed for at angive udskrift med beregning af bredden i centimeter, tommer eller pixels.
Desuden kunne jeg forestille mig at du kan finde noget freeware på Delphi Super Page.
Endeligt vil jeg råde dig til at kigge på borland.com:
Under support/delphi/devtech (eller noget i den stil) har de en download af en print-unit der giver dig rigtigt mange muligheder ved brug af printers unitten. Den source de tilbyder gratis kan bl.a. styre header/footer, margens, fonttyper m.m. sådan som man gør det i f.eks. word. Prøv at se om du kan finde den. Den indeholder mange gode informationer og den kan rent faktisk bruges ganske som den er.
Problemet er ikke så meget fontens størrelse men mere placeringen på siden. Jeg bruger printer.canvas.textout(x, y, tesksten) mit problem er så at x o y koordinaterne ikke er så håndterbare da de er i pixels. Hvis man istedet kunne definere dem i centimeter ville det være perfekt!
Det kan du når du kender fontens opløsning. Alle fonte beregnes efter en opløsning i pixels pr. tomme (og en tomme er ca. 2,54cm)
Når du kender fontens opløsning kan du med printer.canvas.width(xxx) få at vide hvormange pixels en tekst fylder. Og når du så ved hvormange pixels der går på en tomme med den font du har valgt kan du hurtigt beregne den i centimeter.
ok, men det jeg mente var hvordan man sætter printøpløsning igennem programmering. Da alle printere kan printe i en opløsning på 300x300 i hvert fald i nyere printere. For ellers skal jeg lave beregninger for alle printopløsninger 300x300, 600x600, 1200x1200 og da det blot er tekst jeg printer så er det jo ligemeget hvor høj opløsningen er, så understøttelse af de høje printopløsninger kan jo være ligegyldig.
Jeg har desværre ikke en Delphi installeret på den maskine hvor jeg er nu, så jeg er ikke sikker, men jeg mener at der i printers unitten er en procedure du kan kalde der sætter printerens opløsning. Reelt burde du endda kunne få en liste over hvilke opløsninger printeren kan håndtere, men jeg giver dig ret i at 300x300 må være standard for de fleste nye printere, og at der er lettere at nøjes med en opløsning.
Prøv engang at se i sourcen til printers og se om ikke du kan se den procedure jeg forventer skal være der.
En anden mulighed er selvfølgeligt at se i printerens manual og finde den streng der skal sendes til printeren som en initialiseringsstreng for at bl.a. at vælge opløsning.
I løbet af aftenen kan jeg checke om jeg kan finde den hvis du ikke selv har fundet noget i mellemtiden.
Sjensen > Kan du ikke give et eksempel??? Der er efterhånden gået lang tid.
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.