Avatar billede hugopedersen Nybegynder
16. november 2009 - 10:48 Der er 8 kommentarer og
1 løsning

Udskrift af tekst

På et A4 ark vil jeg gerne udskrive:

5 linier tekst a' 80 tegn - font Curier New 12
(evt. 1 streg)
1 linie med 3 tegn - font Courie New 200

Hvordan kringler jeg den uden rapportværktøjer.
Avatar billede hrc Mester
16. november 2009 - 11:03 #1
Du skriver direkte på printerens canvas. Noget med absolutte koordinater og den slags. Jeg har en - godtnok ikke særlig køn - unit der forsøger at indkapsle dette i nogle smartere funktioner. Skal jeg se om jeg kan finde dem til dig?
Avatar billede hugopedersen Nybegynder
16. november 2009 - 11:05 #2
Det må du da meget gerne - tak
Avatar billede hrc Mester
16. november 2009 - 11:19 #3
Jeg vil ikke lægge det ind her - fylder lidt for meget, men måske kan du plukke nogle ideer fra det, eller måske endda bruge det.
Avatar billede hugopedersen Nybegynder
16. november 2009 - 13:13 #4
Tak for tilsendte.
Skulle ikke undre mig om jeg kan få noget ud af det :-)

Men et svar er nok det næste
Avatar billede hrc Mester
16. november 2009 - 18:17 #5
Kig lidt på det. Jeg plejer ikke at sende raketter til månen (laver gammeldags programmering, hvilket Borrisholt engang rigtigvis påpegede)
16. november 2009 - 22:36 #6
Alternativt kan du bruge en lille rutine der skiver et bestemt sted på siden.

Lav en procedure der f.eks. hedder LPrint.

procedure TForm1.Lprint(X, Y: Real; Txt: String);
var                // Print X mm hen og Y mm ned.
  Tx, Ty: LongInt;  // Tx pixels hen og Ty pixels ned.
begin
  Tx := Round((X * GetDeviceCaps(Printer.Handle, Logpixelsx)) * 10 / 254);
  Ty := Round((Y * GetDeviceCaps(Printer.Handle, Logpixelsy)) * 10 / 254);
  Printer.Canvas.TextOut(Tx, Ty, Txt);
end;

Her udskriver jeg fra en TListBox.

        Printer.BeginDoc;
        Linie := 10;  // Vi starter 10 mm nede på siden.
        LinieHojde := 8;
        for X := 0 to ListBox1.Items.Count - 1 do
        begin
--->      LPrint(16, Linie, Copy(ListBox1.Items[X], 0, 80));
          // 16 mm hen og Linie mm ned.
          Linie := Linie + LinieHojde;
          if Linie > Sidehojde then
          begin
            Newpage;
            Linie := 10;
          end;
        end;
        Printer.EndDoc;
Avatar billede hugopedersen Nybegynder
18. november 2009 - 11:35 #7
Smid lige et svar HRC - det var din kode der gav mig et spark
Avatar billede hrc Mester
18. november 2009 - 21:05 #8
Kom du videre med programmet eller er du sparket ud af firmaet? I så fald må du undskylde.
Avatar billede hugopedersen Nybegynder
19. november 2009 - 07:07 #9
Ikke den slags spark :-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester