10. juni 2002 - 15:59Der er
14 kommentarer og 1 løsning
Print fra Delphi program.. Hvordan?
Hej!
Jeg er ved at lave et lille program hvor det er nødvendigt at kunne printe, men hvordan?
Det skal foregå på den måde at når jeg trykker på en knap (Button1) skal den åbne printer dialogen (prindialog1) og udskrive indholdet af et textfelt (memo1)
De fleste virksomheder har efterhånden bevist, at AI virker.
Pilotprojekter leverer resultater. Medarbejdere bruger generative AI-værktøjer. Nye use cases dukker op på tværs af organisationen.
Call AssignPrn to cause all information written to the text file variable F to be directed to the printer. After the variable is assigned, the application must call the Rewrite procedure.
Eksempel fra hjælpen:
This code prints a line of text on the printer when the user clicks the button on the form:
procedure TForm1.Button1Click(Sender: TObject); var MyFile: TextFile; begin AssignPrn(MyFile); Rewrite(MyFile); Writeln(MyFile, 'Print this text'); System.CloseFile(MyFile); end;
Så er det bare at bruge Writeln fra din memo med et for-loop... ;)
Et lille udbygget eksempel på hvordan du kan gøre det:
procedure TForm1.Button1Click(Sender: TObject); var MyFile: TextFile; I: Integer; begin AssignPrn(MyFile); Rewrite(MyFile); for I := 0 to Memo1.Lines.Count-1 do Writeln(MyFile, 'Print this text'); System.CloseFile(MyFile); end;
Ups... Sidste procedure skal vist lige laves lidt om! ;)
procedure TForm1.Button1Click(Sender: TObject); var MyFile: TextFile; I: Integer; begin AssignPrn(MyFile); Rewrite(MyFile); for I := 0 to Memo1.Lines.Count-1 do Writeln(MyFile, Memo1.Lines.Strings[I]); System.CloseFile(MyFile); end;
procedure TForm1.Button1Click(Sender: TObject); var MyFile: TextFile; I: Integer; begin if not PrintDialog1.Execute then Exit; AssignPrn(MyFile); Rewrite(MyFile); for I := 0 to Memo1.Lines.Count-1 do Writeln(MyFile, Memo1.Lines.Strings[I]); System.CloseFile(MyFile); end;
Det virker når jeg tager hele koden, jeg tror det var fordi der ikke stod: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Printers;
Hej j-johansen Du har fået svar men jeg har alligevel et andef forslag til print af memo. De anvisninger du har fået er OK hvis du ikke vil have kontrol over hvordan din udprintning bliver skrevet på papiret.
Her en måde der giver mere konrtol
Indsæt Memo1, PrintDialog1 og Button1 på Form1.
Indsæt følgende kode:
uses Printers;
procedure TForm1.Button1Click(Sender: TObject); var I, XPixelsPrTomme, YPixelsPrTomme, Margen, LinieHoejde, LinieTaeller: Integer;
begin if PrintDialog1.Execute then begin Printer.Canvas.Font := Memo1.Font; XPixelsPrTomme := GetDeviceCaps(Printer.Handle, LOGPIXELSX); Margen := XPixelsPrTomme; // - altså én tomme YPixelsPrTomme := GetDeviceCaps(Printer.Handle, LOGPIXELSY); LinieHoejde := Round(Abs(Printer.Canvas.Font.Size) / 72 * YPixelsPrTomme * 1.40);
LinieTaeller := 3; Printer.BeginDoc; //Erik
for I := 0 to Memo1.Lines.Count - 1 do begin Inc(LinieTaeller); Printer.Canvas.TextOut(Margen, LinieTaeller * LinieHoejde, Memo1.Lines.Strings[I]); end; Printer.EndDoc; end; end;
Læs i øvrigt Per Amdal Steffens bog: Delphi4 Programmering. Der er virkelig mange gode eksempler og forklaringer på alt det grundlæggende i Delphi.
>>eht Hey!!! Der er en der har læst bogen... Skide god, ik'!!! :)
Jeg tænkte ikke lige på det, men brugte bare et hurtigt eksempel af hvad jeg nu kunne huske! ;)
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.