|
| 2 printere Fra : Henning Madsen |
Dato : 22-03-03 22:25 |
|
Jeg er den lykkelige (ulykkelige) ejeraf to printere
Til udskrift på en Lexmark printer bruges følgende program
procedure TForm1.Button1Click(Sender: TObject);
var
X, Y, Z, L, K : Integer;
Navn : String;
begin
X := 100; // Udprintnings afstand fra venstre.
Y := 80; // Udprintnings afstand fra toppen.
K := 0;
Printer.Orientation := poPortrait;
Printer.BeginDoc;
For Z := 0 To ListBox.Items.Count - 1 Do Begin
L := Length(ListBox.Items[Z]);
Navn := Copy(ListBox.Items[Z],0,(L));
If Z >= 81 Then Begin // 81 er antal linier på A4 papiret
X := 1100;
K := 81;
End;
If Z >= 162 Then Begin
X := 2100;
K := 162;
End;
If Z >= 242 Then Begin
X := 3100;
K := 242;
End;
Printer.Canvas.TextOut(X,100 + Y * (Z - K), Navn);
End;
Printer.EndDoc;
end;
Denne printer hænger på LPT1
PÅ LPT2 hænger en IBM læserprinter.
Da der altid er de samme data der skal hentes syntes jeg det er nemmere at
lave en menu som denne
Udprint fra
Lexmark Her vel jeg hente og starte
ovenfor viste program
IBM Her hentes et program magen
til blot med rettelser for den forskellige opløsning der er på IBM'en.
Men hvad skal jeg skrive øverst i programmet for at fortælle at udskriften
er til LPT2 ?
Lexmark er i Windows 98 sat som standard printer og jeg bruger Delphi 6
Håber der er en der vel hjælpe mig med problemet.
----
Med venlig hilsen
Henning Madsen
| |
Klaus Petersen (23-03-2003)
| Kommentar Fra : Klaus Petersen |
Dato : 23-03-03 17:21 |
|
Simpelt nok egentlig.
I hjælpen kan du læse om TPrinter objektet.
Der vil du kunne læse, at den har en attribut, der hedder Printers, som er
af typen TStrings.
Den attribut indeholder navnene på alle de printere, som der er installeret
på maskinen. Det kan du bruge til din GUI.
Desuden har TPrinters en attribut, der hedder PrinterIndex. Denne read/write
attribut bestemmer hvilken printer, TPrinter objektet repræsenterer.
Så er det jo bare at sætte PrinterIndex til den printer, du ønsker at
udskrive til - Værdien, du skal sætte den til, er indeks værdien på den
streng, printerens navn har i Printers attributten.
Med andre ord skal du ikke tænke på hvilken printer udgang, du ønsker at
skrive til.
| |
Klaus Petersen (23-03-2003)
| Kommentar Fra : Klaus Petersen |
Dato : 23-03-03 17:28 |
|
> X := 100; // Udprintnings afstand fra venstre.
> Y := 80; // Udprintnings afstand fra toppen.
Pas i øvrigt på med at bruge statiske koordinater når du arbejder med
printere.
Problemet er, at din udskrift bliver afhængig af hvad printerens opløsning
er sat til.
Koordinat 100 er ikke samme sted på en printer med en opløsning på 300 dpi i
forhold til en printer med 600 dpi.
Du kan bruge PageWidth og PageHeight attributterne til at udregne
koordinaterne ud relativt til opløsningen, dvs. i stil med
X := Printer.PageWidth div 10; // en tiende del inde på siden
| |
|
|