Hi Frank, wie krieg ich das hin, ab einer bestimmten ZeilenAnzahl einen Seitenvorschub zu erzeugen? Gibt da vllt. noch ein verstecktes/undokumentiertes Flag, mit dem man sowas regeln kann?
Wär cool, sonst stecke ich nämlich ganz schön in der Zwickmühle...;)
Listview.dll Druckfunktion
-
-
-
Nein, so ein Flag gibt es leider nicht.
Du könntest aber vor dem Drucken Leerzeilen in das Listview einfügen, um einen Seitenvorschub zu erzwingen. Nach dem Drucken entfernst du die Zeilen. Wenn du in der Zeit das Listview mit WM_SETREDRAW am Neuzeichnen hinderst, merkt das niemand.
Die andere Alternative ist, das Drucken selber zu übernehmen. Eigentlich bietet die Listview.dll alle Möglichkeiten, die Texte und Grafiken zu ermitteln. Ist also nicht so aufwendig, dafür aber umso flexibler.
-
Zitat
Die andere Alternative ist, das Drucken selber zu übernehmen.
Du meinst, mit den Druckfunktionen von xProfan? - Teste ich mal durch.
Hab natürlich erstmal den geringeren Aufwand (mit 'PrintListview') versucht.Über Leerzeilen einfügen hab ich auch schon nachgedacht - zumal ich das Listview, welches ich drucke nur temporär & unsichtbar mit den zu druckenden Daten fülle (ich kopiere also die passenden Daten vom 'Hauptlistview' ins unsichtbare 'Drucklistview'). - Weil ich aber die Gitterlinien mit ausdrucke, sieht das mit den Leerzeilen vllt. etwas komisch aus...
Ok, Danke für die Vorschläge - ich werd mir da schon was 'zurecht-frickeln':-)
-
So, nur zur Info:
Hab das 'Drucklistview' ein wenig umgestaltet & konnte daher auf das Gitter verzichten. Dadurch konnte ich den Seitenvorschub an der gewünschten Stelle mit Leerzeilen realisieren. Solange keiner auf die Idee kommt, die voreingestellten Ränder zu ändern, sollte das funzen...;)
Hab aber jetzt durch das Proben gemerkt, daß man mit den xProfan-Druckfunktionen jede Menge anstellen kann - da werde ich mit Sicherheit in anderen Projekten drauf zurückkommen:-) -
So soll es ja auch sein. Die Listview-Druckfunktion kann ja nie für alle Fälle ausreichen.
-
Hallo Frank,
könntest du evtl. mal eine rudimentäre Druckfunktion,
die auch das Gitter druckt, mit XProfan-Mitteln zur
Verfügung stellen ?
Braucht ja nicht so konfortabel wie in der Listview.dll
zu sein. Hab da einen Bekannten, der unbedingt ein
Programm in 64 Bit haben will. Eine 32Bit-DLL mit einem
64 Bit Programm aufrufen geht ja nicht.
Dank Rolands FreeProfan64 sind ja 64 Bit Programme
möglich. -
Heinz, alles was du dafür brauchst bietet XProfan, schau mal in die Hilfe Kapitel 18.1 - Drucken mit XProfan.
Sämtliche benötigten Infos lassen sich durch die Listview.dll auslesen, wenn du Gitter benötigst, mußt du die Gitter zwischen StartPrint/EndPrint malen, ebenso wie ja auch die Texte. Das ist die ganze Kunst.
Die Listview.dll macht es genauso, nur muss sie die kompliziertere API benutzen und nicht die konfortablen XProfan-Befehle. -
Hallo Frank,
Ich dachte, da du das ja schon bei der DLL gemacht hast,
kennst du schon mal die Vorgehensweise. Mir fehlt da ein
gewisser Ansatz, wie ich im einzelnen vorgehen muß.
Da könnte ich etwas Hilfe gebrauchen.
Da muß ja auch noch die Druckerseite berücksichtigt
werden, heißt Seitenbreite und Höhe. Das andere geht
wahrscheinlich wie malen auf einem Canvas oder Static
Control. Das ganze dann in Relation zur Anzahl Spalten
und Zeilen. -
Ich kann dir gerne den Assemblercode der Druckfunktion zur Verfügung stellen, der mit API arbeitet. Mit XProfan wird das aber einfacher. Bitte hab aber Verständnis dafür, dass ich weder genügend Zeit, noch selber Verwendung habe für eine Druckroutine, die ich in gleicher Form schon einmal programmiert hatte. Ich kenne auch deine Wünsche nicht genau.
Aber als Tipp: Überlege dir zuerst, ob immer die gesamte Listview-Breite aufs Papier passen soll. Bei breiten Listviews erhälst du ansonsten winzige Textgrößen.
Andererseits werden aber Teile des Listviews abgeschnitten oder müssen auf mehrere Seiten nebeneinander verteilt werden, was beides nicht von Vorteil ist.
Ok, dann ermittle die Anzahl Spalten und deren Breiten, teile die Breiten der Spalten auf die verfügbare Seitengröße auf und zeichne Linien oder Rechtecke und dort hinein die (farbigen?) Texte (passend formatiert natürlich), ggf. auch noch die Icons. Das machst du jetzt ein Stückchen tiefer so oft weiter, wie Zeilen im Listview vorhanden sind. Ist die Seite währenddessen zuende, fange eine neue Seite und wieder oben an. Und lass noch Platz für die Seitennummern und Überschriften...
Ich denke, du merkst, dass sowas Alles in Allem eine große Aufgabe bedeutet. Da XProfan dir schon eine Menge mithilft, Assembler aber nicht, hast du schon einen Vorteil gegenüber mir damals. :cool:
Ich wünsche dir ein gutes Gelingen!
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!