Forum: Object-Pascal / Delphi-Language
by Luckie,
28. Mär 2009
@jfheins: Die -1 habe ich schon gar nicht mehr gesehen.
Besten Dank. Jetzt haben wir es geschafft.
Forum: Object-Pascal / Delphi-Language
by Luckie,
28. Mär 2009
So passt es jetzt:
procedure TPrintContacts.PrintAllContacts;
var
i: Integer;
begin
Printer.Title := 'Adressdatenbank - Kontaktliste drucken';
Printer.Orientation := poPortrait;
Printer.BeginDoc;
FCanvas := Printer.Canvas;
Forum: Object-Pascal / Delphi-Language
by Luckie,
28. Mär 2009
Ach so. Gut. Verstanden.
Aber damit stimmt noch was nicht. Das ist irgendwie nur jeder zweite oder dritte Datensatz.
Forum: Object-Pascal / Delphi-Language
by Luckie,
28. Mär 2009
Und wo ist die Positionsangabe? man müsste die Seite ja jetzt dritteln? Ich gucke mir das mal an.
Forum: Object-Pascal / Delphi-Language
by Luckie,
28. Mär 2009
So geht es:
if i * 2 + 1 < FContactList.Count then // Wenn Schluss ist, brauchts keine neue Seite usw. mehr
begin
PrintAllSecondContact(Printer.Canvas, FContactList.Items);
if i * 2 + 1 <> FContactList.Count - 1 then
Printer.NewPage;
end;
Aber wie würde das ganze für drei Datensätze auf einer Seite aussehen?
Forum: Object-Pascal / Delphi-Language
by Luckie,
28. Mär 2009
Ich drucke jede Zeile einzeln mit einer Funktion, die mir die nächste Höhe zurück gibt. Leider noch nicht dynamisch. Ich müsste es noch hinbekommen, dass nict die einzelne Zeilwirklich gedruckten Zeilenenhöhe zurückgegebn wird, sondern die tatsächliche Höhe der wirklich gedruckten Zeilen. Das werde ich heute Abend, wenn ich wieder zu Hause bin mal vorstellen.
Nicht ich, sondern du. ;) Ich...
Forum: Object-Pascal / Delphi-Language
by Luckie,
28. Mär 2009
Das Problem ist, ich habe ein Feld das in der Höhe variabel ist. Und es ist mir bisher noch nicht gelungen den Abstand zum nächsten Datensatz zu errechnen. Hinzukommt, dass man dann noch berücksichtigen müsste, was passiert, wenn ein Datensatz nicht mehr ganz auf eine Seite passt? Das würde das ganze ziemlich verkomplizieren. So habe ich genug Luft.
Er druckt eine Seite zu viel und die ist...
Forum: Object-Pascal / Delphi-Language
by Luckie,
28. Mär 2009
Ich habe eine Liste von Kontakten. Jetzt will ich auf jede Seite zwei datensätze drucken:
for i := 0 to FContactList.Count - 1 do
begin
PrintAllContactsHeader(Printer.Canvas);
PrintAllContactsFooter(Printer.Canvas, Printer.PageNumber);
PrintAllFirstContact(Printer.Canvas, FContactList.Items);
PrintAllSecondContact(Printer.Canvas, FContactList.Items);
Inc(PageNumber);...