-
System.Drawing.Printing PrintDocument
wäre zum beispiel eine Klasse
-
Hab das mal versucht, komme aber nicht so richtig vorwärts damit.
Hast Du bitt mal ein Beispiel in Code Form.
Mir reicht es, wenn ich erstmal nur eine Textdatei ausgedruckt bekomme.
-
Kriegt keiner von euch auf die Lampe, wah?!
Naja ist gut, bin wohl falsch hier, ist nämlich ein bisschen mehr als nur zwei Variablen mit einander zu verbinden.
-
Kalle 123 schrieb:
Kriegt keiner von euch auf die Lampe, wah?!
Vor allem bekommt es hier einer nicht gebacken außer Beleidigungen mal seinen Kopf einzuschalten und zumindest 2 oder 3 Suchbegriffe in Google oder MSDN einzutippen. Ich habe zwar selbst mit C++/CLI nur am Rande gearbeitet und auch keine Ahnung vom Drucken, aber innerhalb von 5 Minuten Beispiele gefunden.
Kalle 123 schrieb:
Naja ist gut, bin wohl falsch hier, ist nämlich ein bisschen mehr als nur zwei Variablen mit einander zu verbinden.
Stimmt. Es ist leichter die Arbeit auf andere abzuwälzen als z.b. in einen Browser www.google.de einzutippen und dann vielleicht ein paar sinnvolle Schlagwörter wie System.Drawing.Printing DataGrid Beispiel OR Example einzugeben, und sich dann durch ein paar Seiten zu hangeln. Man findet auf jeden Fall Beispiele für VB, C# und Begrenzt auch C++/CLI. Das man nicht unbedingt VB als C++ Entwickler versteht (ich zumindest tue mich in dem VB-Chaos schwer, auch wenn ich dort ein paar Anhaltspunkte finde) ist nicht unverständlich, aber mit den C# Beispielen sollte man recht gut auf die Umsetzung in C++/CLI deuten können - oder ist sind deine Programmierfähigkeiten etwa kleiner als deine Ausfälle anderen gegenüber?
Kalle 123 schrieb:
...Naja ist gut, bin wohl falsch hier...
Mit deiner Wortwahl sicherlich.
cu André
-
Nee lass mal, hab es schon hinbekommen und für die Leute die es auch interessiert, einfach mal bei Google vorbei gucken.
Genau das macht ja auch den Sinn eines Forums aus, jemanden den Tipp zugegeben dass er Google in Anspruch nehmen soll. Schon ziemlich beknackt, musst Du doch wohl auch selber zugeben, oder?
C++ Forum ade, Google willkommen.Bye Kalle
-
Kalle 123 schrieb:
Nee lass mal, hab es schon hinbekommen und für die Leute die es auch interessiert, einfach mal bei Google vorbei gucken.
Sofern es wie in diesen Fall unter den ersten Treffern bereits Antworten gibt: Ja. Man kann jemanden auch ein wenig Eigeninitiative abverlangen. Und da Druckeransteuerung nun wirklich nicht zu den allerersten Schritten in der Programmierung zählt, kann ich eigentlich annehmen das du zumindest vor dem Fragen selbst mal 5 Minuten nach einer Lösung suchen kannst.
Kalle 123 schrieb:
Genau das macht ja auch den Sinn eines Forums aus, jemanden den Tipp zugegeben dass er Google in Anspruch nehmen soll. Schon ziemlich beknackt, musst Du doch wohl auch selber zugeben, oder?
Wenn du dir die FAQ's der Foren durchlesen würdest, hättest du diese Kommentare lieber für dich behalten. Man geht davon aus das jemand der hier postet zumindest versucht hat sich vorher selbst mit der Materie zu beschäftigen.
Der Sinn eines Forums ist auch sicher nicht das andere deine Aufgaben erledigen, sondern das man jemanden unter die Arme greift, wenn er nicht mehr weiter weiß. Zudem ist das C++/CLI-Forum mit sicherheit nicht so gefüllt das du hier zu jedem Thema eine Antwort bekommst. C++/CLI ist imho eher eine Nischensprache als zum Beispiel C# und C++.
Kalle 123 schrieb:
C++ Forum ade, Google willkommen.
Ist besser so: Etwas Eigeninitiative hat noch niemanden geschadet.
cu André
-
Hier noch ein link für andere die auch ein Dokument drucken wollen, aber in c# geschrieben, was man ja aber leicht übersetzen kann.
-
asc schrieb:
Stimmt. Es ist leichter die Arbeit auf andere abzuwälzen als z.b. in einen Browser www.google.de einzutippen und dann vielleicht ein paar sinnvolle Schlagwörter wie System.Drawing.Printing DataGrid Beispiel OR Example einzugeben, und sich dann durch ein paar Seiten zu hangeln. Man findet auf jeden Fall Beispiele für VB, C# und Begrenzt auch C++/CLI. Das man nicht unbedingt VB als C++ Entwickler versteht (ich zumindest tue mich in dem VB-Chaos schwer, auch wenn ich dort ein paar Anhaltspunkte finde) ist nicht unverständlich, aber mit den C# Beispielen sollte man recht gut auf die Umsetzung in C++/CLI deuten können - oder ist sind deine Programmierfähigkeiten etwa kleiner als deine Ausfälle anderen gegenüber?
Da hast Du Dich aber ziemlich weit aus dem Fenster gelehnt.
Es gibt kein verwertbares Beispiel unter C++/CLI.
Strick das Beispiel mal auf C++/CLI um, da bist Du Wochen bei.
-
Wieso ?
Du musst doch nur die Objekte mit einem ^ versehen, dort die . mit -> Ersetzen und Namensräume mit :: kennzeichnen.
Man könnte sich die Zeit natürlich sparen und die Klasse in einer DLL gekapselt dem C++/CLI Projekt hinzufügen.
-
So Jungs,
habe es super hinbekommen.
Hier mal ein bisschen Code...float flZeilenProSeite = 0; float flImTextZeieln = 0; int flRandLinks = e->MarginBounds.Left -100; int flRandOben = e->MarginBounds.Top -100; int flRandRechts = e->MarginBounds.Right; int flDruckbreite = Convert::ToInt32(e->MarginBounds.Width); int flVertikalPos = e->MarginBounds.Top -100; int intDruckzeile = 0; String^ strZeile = nullptr; //errechnen der Zeilenanzahl pro Seite flZeilenProSeite = e->MarginBounds.Height / richTextBox1->Font->GetHeight(e->Graphics); //Höhe einer Zeile int flZeilenHoehe = Convert::ToInt32(richTextBox1->Font->GetHeight(e->Graphics)); while(intAktuelleZeile < intAnzahlZeilen) { strZeile = strAusgabezeilen[intAktuelleZeile]; //Breite der ZEile berechnen SizeF sizeZeilenbreite = e->Graphics->MeasureString(strZeile,richTextBox1->Font); //Wenn eine Zeile breiter als der bedruckbare Bereich ist, dann wird hier die Höhe erweitert. int flZeilenHoeheAktuell = 0; if(sizeZeilenbreite.Width > flDruckbreite) { //Anzahl der Zeilen berechnen int intZeilenAnzahl = Convert::ToInt32(sizeZeilenbreite.Width) / flDruckbreite; //Rest berechnen; ist der Rest größer 0, wird eine Zeile "angehängt" int intZeilenRest = safe_cast<int>(sizeZeilenbreite.Width) % safe_cast<int>(flDruckbreite); if(intZeilenRest > 0) { intZeilenAnzahl++; } flZeilenHoeheAktuell = Convert::ToInt32(flZeilenHoehe) *intZeilenAnzahl; intDruckzeile = intDruckzeile + intZeilenAnzahl; } else { flZeilenHoeheAktuell = flZeilenHoehe; } //Zeichenbereich RectangleF^ rectBereich = gcnew RectangleF(Convert::ToSingle(flRandLinks), Convert::ToSingle(flVertikalPos), Convert::ToSingle(flDruckbreite), Convert::ToSingle(flZeilenHoeheAktuell)); //Vertikale Position neu berechnen flVertikalPos = flVertikalPos + Convert::ToInt32(rectBereich->Height); //Ausdruck der aktuellen Zeile SolidBrush^ drawBrush = gcnew SolidBrush(richTextBox1->ForeColor); e->Graphics->DrawString(strZeile, richTextBox1->Font, drawBrush, Convert::ToSingle(flRandLinks),Convert::ToSingle(flVertikalPos)); intAktuelleZeile++; intDruckzeile++; //Wenn noch Zeilen vorhanden sind, neue Seite erzeugen if(intDruckzeile >= flZeilenProSeite) { if(intAnzahlZeilen >= flZeilenProSeite) { e->HasMorePages = true; } else { e->HasMorePages = false; } //Verlassen der Routine wenn das Seitenende erreicht ist return; } }