![]() |
Bestimmte Seiten Drucken
Hi Allerseits
Ich sollte ein Programm machen, wo man bestimmte Seiten Drucken kann. Wie bei Word z.B. Seite x - y oder Seiten x ; y ; z Wie kann ich das machen?? Und wie kann ich ein Edit Feld in die einzelnen Zeichen teilen? Thx im voraus ArmyMan |
Re: Bestimmte Seiten Drucken
Hallo ArmyMan,
in welcher Form liegt denn das zu druckende Dokument vor? Generierst du es selber über einen Reportgenerator oder nutzt du ein Textverarbeitungsprogramm wie Staroffice, Wordperfect oder Word? |
Re: Bestimmte Seiten Drucken
Nein. Ich zeichne ein Canvas. Dann kann ich es Ausdrucken.
Das Problem: Wenn ich es drucke, druckt es alle seiten die das canvas benötigt. Mein Ziel: Ich will ein eingabefeld machen wo man entweder einen bestimmten Bereich (x-y) oder bestimmte Seiten (x;y;z) drucken kann. zB. Im Edit Feld steht 1;3;4. Jetzt druckt es nur die Seiten 1,3 und 4. zB. Im Edit Feld steht 5-7. Jetzt druckt es nur die Seiten 5,6,7. zB. Im Edit Feld Steht 1;3-6;9 Jetzt druckt es nur die Seiten 1,3,4,5,6 und 9. Wie geht das?? ArmyMan |
Re: Bestimmte Seiten Drucken
Geht das auch mit Case oder MaskEdit oder so was?
|
Re: Bestimmte Seiten Drucken
Hallo ArmyMan,
MaskEdit hilft die hier nicht, weildu verschiedene Formate zulassen willst. Du musst also den eingegebenen String auswerten. Dabei suchst du gezielt nach den Trennzeichen und zerlegst den String zunächst in Gruppen, die durch ; getrennt sind und untersuchst anschließend die so erhaltenen Gruppen, ob es Bereiche oder Einzelseiten sind. Dann kannst du diese auswerten und drucken. |
Re: Bestimmte Seiten Drucken
Auswerten und Drucken?
Wie geht das?? |
Re: Bestimmte Seiten Drucken
Hallo ArmyMan,
die Position einen Zeichens in einem String findet die Funktion Pos. Wenn du die Position hast, kannst du mit Copy und Delete den Ursprungsstring manipulieren. D.h.: Suche mithilfe von Pos nach ";" Kopiere alles vor diesem Zeilen z.B. in eine StringList und lösche anschließend alles bis zum ersten ";", dann geht die Suche wieder von vorne los. Den überbleibenden String kopierst du auch als Element in deine StringList. Dann läust du in einer Schleife durch die Elemente der Stringlist und prüfst, ob ein "-" enthalten ist, dann hnadelt es sich um einen Bereich und du mustt die Zahl vor und hinter dem "-" auswerten (mit StrToInt). Beachte aber auch, dass die Eingabe unsinnig sein kann und du diese dann ignorieren musst und ggf. eine Fehlermeldung ausgibst. Das Druckerobjekt Printer hat selbst ein CANVAS. Auf dieses kannst du direkt zeichnen. |
Re: Bestimmte Seiten Drucken
Wie sieht das als Quelltext aus. Ich habe noch keine sehr grosse Erfahrung mit Delphi.
Wie kann ich dann dem Drucker sagen welche Seiten er zu drucken hat??? |
Re: Bestimmte Seiten Drucken
Am besten, du nimmst was fertiges, bevor du dir hier noch was abbrichst, wenn du noch nicht so viel Erfahrung mit Delphi hast. ;) Drucken ist so eine Sache für sich, wo du immer wieder auf diverse (zum Teil auch hartnäckige) Probleme stößt.
Als Tip kann ich dir die "GmPrintSuite" von MurtSoft empfehlen. Diese war bis vor kurzem noch ein kommerzielles, jedoch sehr professionelles Projekt, ist jetzt aber Open-Source. Finden kannst du diese unter ![]() Hoffe, das hilft dir. Grüße, Mario |
Re: Bestimmte Seiten Drucken
Weisst du. Ich muss es so machen als übung. Ich bin ja "Anfänger". Und jetzt muss ich eine Lösung finden. Gar nicht so einfach wenn man keine Ahnung hat. :wall:
Darum muss ich es so machen. Wäre froh wenn mir jemand helfen kann. ArmyMan |
Re: Bestimmte Seiten Drucken
OK, wenn es als Übung ist, dann alles klar. Ich dachte, du brauchst das für eine Software-Lösung. ;)
Professionelle Druckkomponenten arbeiten in der Regel mit Metafiles, nicht mit TImages oder so. Eine Seite ist dann eine Instanz eines TMetafile, viele Seiten sind folglich ein "Array of TMetafile". Auf das TMetafile erfolgen dann auch die Ausgaben des Textes, der Bilder usw. und diese wird dann auf den Canvas des Druckers gezeichnet, soweit ich das beim Überfliegen der Codes von Druckkompos mitgekriegt hab. Wenn du nun eine bestimmte Seite drucken willst, dann ist das der entsprechende Index des TMetafile-Arrays, welchen du auf den Drucker schicken musst. Grüße, Mario |
Re: Bestimmte Seiten Drucken
??? :wiejetzt: ???
Keinen Plan wie das funktionieren soll. Kannst du mir ein Beispiel machen bitte. Dann kann ich den Knopf vieleicht öffnen. :coder2: |
Re: Bestimmte Seiten Drucken
Warum stellst du dich denn zum Anfang auch gleich vor SOOO ein Problem?
Fang doch erstmal klein an und verstehe die Grundlagen von der Arbeit mit Delphi und dessen Möglichkeiten und wie man sie wann benutzt. ;) |
Re: Bestimmte Seiten Drucken
Hallo ArmyMan,
auch wenn du erst Anfänger bist, solltest du in der Lage sein, mit der Hilfe, die ich oben gegeben habe, ein kleines Programm zu schreiben:
Delphi-Quellcode:
Versuche vielleicht einmal die Idee weiter umzusetzen.
procedure WerteEingabe aus;
var eingebe : String; posi : Integer; begin // Eingabe aus dem Editfeld holen eingabe := Edit1.Text; posi := Pos(';', eingabe); while (posi > 0) and (Trim(eingabe) <> '') do begin // den Teil bis zum ; in eine Liste einfügen // die Liste ist global und bereits erzeugt SeitenList.Add(Copy(eingabe, 1, posi -1); // mit Delete alles einschließlich ; löschen ... // nächstes ; suchen end; end; |
Re: Bestimmte Seiten Drucken
Danke MrSpock
Doch wie kann ich einen Teil bis und mit dem ';' oder '-' löschen? Den ganzen string löschen kann ich schon :roll: aber das ist ja nicht was ich will. Kannst du mir vieleicht ein Beispiel machen. Danke ArmyMan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz