Avatar billede flemming_a Nybegynder
24. november 2005 - 11:06 Der er 9 kommentarer og
1 løsning

hvordan gør jeg efter printer.newpage;

Efter printer.newpage, starter min udskrift en side længere fremme men på samme sted på siden, hvordan får jeg den til at starte øverst, men på en ny side ????
24. november 2005 - 22:02 #1
Den måde hvorpå du skriver noget på første side, definerer du da ikke hvor på siden det skal stå?
For så er det vel bare at sætte disse parametre til øverst på siden.
Må jeg se din rutine der skriver til printeren?
Avatar billede flemming_a Nybegynder
25. november 2005 - 08:48 #2
procedure TForm1.Label2Click(Sender: TObject);
var text:textfile;
    i:integer;
begin
  if printersetupdialog1.Execute then
  begin
    assignprn(text);
    rewrite(text);
    writeln(text,'');
    writeln(text,'');
    writeln(text,'  STAMINFORMATION FOR ID '+valgt+'..............');
    writeln(text,'');
    writeln(text,'');
    .
    .
    .
    writeln(text,'bla,bla') //Slut på side 1
    printer.newpage //
    write //osv
  end;
end;
Avatar billede flemming_a Nybegynder
25. november 2005 - 08:50 #3
Den starter på den nye side på samme linie som den stod på på foregående side....
Avatar billede lsc Nybegynder
25. november 2005 - 17:45 #4
I stedet for
  printer.newpage;
kan du prøve at skrive
  write(text,#12);
Avatar billede flemming_a Nybegynder
25. november 2005 - 17:48 #5
det vil jeg prøve, men det bliver først i morgen når jeg kommer på job igen.....
27. november 2005 - 10:57 #6
Du kunne jo også, istedet for at bruge 'NewPage', skrive:

Close(Text=;
Assignprn(text);
Rewrite(text);
27. november 2005 - 11:07 #7
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 flemming_a Nybegynder
28. november 2005 - 08:00 #8
lsc -> din løsning funker bare, tænk at det var så nemt.........
smid svar for point.

Anton din løsning virker også, jeg opretter lige et spg så du også kan få point, jeg synes 30 er for lidt at dele http://exp.dk/spm/667940
Avatar billede lsc Nybegynder
28. november 2005 - 14:43 #9
Det lyder godt. #12 eller chr(12) - er formfeed og får printeren til at skifte til ny side.
Avatar billede flemming_a Nybegynder
28. november 2005 - 21:23 #10
mange tak
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