Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bestimmte Seiten Drucken (https://www.delphipraxis.net/30919-bestimmte-seiten-drucken.html)

ArmyMan 1. Okt 2004 07:42


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

MrSpock 1. Okt 2004 07:49

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?

ArmyMan 1. Okt 2004 07:54

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

ArmyMan 1. Okt 2004 08:03

Re: Bestimmte Seiten Drucken
 
Geht das auch mit Case oder MaskEdit oder so was?

MrSpock 1. Okt 2004 08:08

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.

ArmyMan 1. Okt 2004 08:10

Re: Bestimmte Seiten Drucken
 
Auswerten und Drucken?
Wie geht das??

MrSpock 1. Okt 2004 08:17

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.

ArmyMan 1. Okt 2004 08:21

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???

Nuclear-Ping 1. Okt 2004 08:54

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 http://www.murtsoft.co.uk/.

Hoffe, das hilft dir.

Grüße,
Mario

ArmyMan 1. Okt 2004 09:02

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

Nuclear-Ping 1. Okt 2004 09:44

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

ArmyMan 1. Okt 2004 09:59

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:

Nuclear-Ping 1. Okt 2004 10:36

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. ;)

MrSpock 1. Okt 2004 12:42

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:
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;
Versuche vielleicht einmal die Idee weiter umzusetzen.

ArmyMan 4. Okt 2004 06:32

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