![]() |
Tabelle mit eigenem Text drucken
Hallo zusammen
Ich programmiere seit einem Jahr mit Delphi und verstehe es sehr gut. Doch ich möchte ein Programm für meinen Vater schreiben, bei dem man die Eingaben und die dazugehörenden Resultate in einer Tabelle ausdrucken kann. Die Tabelle sollte man aber nicht sehen sie soll nur im Hintergrund, die richtigen Texte in die richtigen Felder einfüllen und drucken. Ich versuchte es mit Printer, aber ich weiss nicht wie ich meinen eigenen Text einfügen kann. Ich wäre echt froh wenn jemand mir helfen könnte! Danke vielmals! |
Re: Tabelle mit eigenem Text drucken
Herzlich willkommen in der Delphi-PRAXiS, Marcel.
Für dich ist es vielleicht am einfachsten, wenn du so vorgehst:
Delphi-Quellcode:
Es gibt aber noch viele andere Wege.
uses
Printers; procedure PrintNamedValues(list: TStringList); var i: Integer; begin AssignPrn(output); Rewrite(output); Printer.Canvas.Font.Name := 'Courier New'; Printer.Canvas.Font.Size := 10; for i := 0 to Pred(list.Count) do WriteLn(list.Names[i]:30, list.ValueFromIndex[i]); CloseFile(output); end; procedure TDemoForm.DemoButtonClick(Sender: TObject); var list: TStringList; begin list := TStringList.Create; list.Values['Eingabe'] := 'Ergebnis'; PrintNamedValues(list); list.Free; end; Freundliche Grüße vom marabu |
Wie kann man mehrere Zellen benützen? Danke!
Danke vielmals für deine Hilfe!
Aber wie kann ich die Resultate, wie bei einer Tabelle, schön immer an der gleichen Stelle drucken? das müsste etwa so aussehen: Eingaben Resultate 124 45 332 33333 und nicht Eingaben Resultate 124 45 332 '''''33333 Die Apastroph wären nicht da, ich kann es sonst nicht schreiben! Ich wäre dir(oder euch) sehr dankbar! Marcel_Mars |
Re: Tabelle mit eigenem Text drucken
Hallo Marcel,
ich hätte gewettet, dass meine Code-Zeilen die Spaltenanordnung erzielen, ausprobiert habe ich es aber nicht. Hast du denn alles genauso gemacht, wie ich es dir gezeigt habe? Speziell die Einstellung des Font war dazu gedacht, dass auch immer die Werte in der ersten Spalte einen Raum von 30 (gleich breiten) Zeichen einnehmen, damit die Werte der zweiten Spalte ab der 31. Stelle linksbündig ausgerichtet erscheinen. Freundliche Grüße |
Re: Tabelle mit eigenem Text drucken
Hi Marcel!
schau mal auf dieser Seite: ![]() ![]() Vielleicht wirst du als Anfänger nicht alles verstehen, aber es könnte Dein Problem lösen... ;-) Gruß Pfoto |
Re: Tabelle mit eigenem Text drucken
Diese Links waren gut, aber wo genau muss ich dann meinen text einfügen, und wie!
:gruebel: :gruebel: Da ich noch ein Anfänger, bin könnte mir das jemand genau erklären. Danke für eure Tipps! Freundliche Grüsse Marcel_Mars |
Re: Tabelle mit eigenem Text drucken
Hallo Marcel,
du hast jetzt schon drei Prozeduren, welche dir Möglichkeiten zum (zwei-)spaltigen Drucken zeigen. Jede dieser Prozeduren hat eine Parameterliste, wobei der erste Parameter angibt, in welcher Form die Daten übergeben werden müssen. Bei PrintNamedValues() erwarte ich die Daten in einer StringList und jede Zeile muss die Form "Eingabe=Ergebnis" haben. Bei PrintGrid(grid, string) wird erwartet, dass die Daten in den Zellen eines StringGrid angeliefert werden, welches eine feste Zeile und eine feste Spalte mit Überschriften besitzt. Bei PrintGrid(grid, string, orientation) soll das Grid keine feste Spalte enthalten. Entweder du lieferst deine Daten so an, wie sie von den fertigen Prozeduren erwartet werden, oder du musst die Prozeduren an deine Bedürfnisse anpassen. Wir können dir da kaum helfen, solange du uns nicht mitteilst, in welcher Form du deine Daten bereit hältst. Freundliche Grüße |
Re: Tabelle mit eigenem Text drucken
Moin Marcel,
Mal abgesehen davon, dass die Sparte definitiv falsch ist (:mrgreen:), hier mal ein kleiner Tipp: Ziehe die Komponente TStringGrid auf dein Formular und setzt die Eigenschaft visible im Objektinspektor auf false. Das hat dne Effekt, dass du die Komponente zwar siehst, während du an dem Programm arbeitest, sie aber für den Anwender, der nur mit der fertigen Exe arbeitet, unsichtbar ist. Anschließend nimmst du dir ![]()
Delphi-Quellcode:
Gruß,
PrintGrid(StringGrid1, 'Mein Titel');
Daniel |
Re: Tabelle mit eigenem Text drucken
Also die Eingaben wandelte ich von String zu Integer um. Und die Resultate sind Strings (z.B.: 'falsch 244').
|
Re: Tabelle mit eigenem Text drucken
Hallo Marcel,
willst du die Daten mit PrintGrid() drucken, dann musst du deine Werte in einem Grid zwischenspeichern:
Delphi-Quellcode:
Dabei musst du auf die Randbedingungen achten, welche in PrintGrid() versteckt sind und die ich dir bereits geschrieben habe.
var
iRow: Integer; begin with StringGrid do begin // index für neue Zeile merken iRow := RowCount; // neue Zeile anfügen RowCount := Succ(RowCount); // Eingabe in die erste Spalte nach fester Spalte Cells[FixedCols, iRow] := Trim(EingabeEdit.Text); // Ergebnis in nächste Spalte Cells[Succ(FixedCols), iRow] := ErgebnisString; end; end; Willst du deine Daten mit PrintNamedValues() drucken, dann müssen sie in einer StringList zwischengespeichert werden:
Delphi-Quellcode:
Freundliche Grüße
var
Tabelle: TStrings; // Tabelle := TStringList.Create; begin Tabelle.Values[Trim(EingabeEdit.Text)] := ErgebnisString; end; |
Re: Tabelle mit eigenem Text drucken
Danke vielmals!!!
Eigentlich sollte ja alles funktionieren, aber wenn ich auf den Button ''Drucken'' drücke, kommt diese Fehlermeldung: Zugriffsverletzung bei Adresse 004151D3 in Modul ' Knochenalter Q10.exe!' Lesen Von Adresse 8BD88BAB!. :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: Das heisst ich kan nichts drucken. Liegt das an dem Quelltext oder hab ich was falsches gelesen? Wäre echt froh wenn ich endlich drucken könnte! Freundliche Grüsse von Marcel |
Re: Tabelle mit eigenem Text drucken
Marcel, du musst mal den Code zeigen, mit dem du zu drucken versuchst.
|
Re: Tabelle mit eigenem Text drucken
Meinst du den Quellcode?
Er ist sehr lange welchen Teil wilst du sehen? |
Re: Tabelle mit eigenem Text drucken
Sorry ich habe was falsch eingetippt!
Aber es gibt dennoch Probleme! Erstens: Wie kann ich mit PrintNamedValues die nächste Zelle anwählen? 2.: Warum erscheint beim Beenden immer Runtime (noch irgendwas)? Ich hätte nie gedacht, dass das Drucken von Tabellen eine solche Herausforderung ist Danke wenn ihr mir helf! Freundliche Grüsse Marcel |
Re: Tabelle mit eigenem Text drucken
Hallo Marcel,
PrintNamedValues() schreibt automatisch alle Werte (da ist eine Schleife enthalten) untereinander, du musst also keine neue Zeile anwählen. Wenn du magst, dann hänge doch dein Projekt als ZIP-Archiv (ohne EXE und DCU) an. Vielleicht bekommst du dann den Runtime-Fehler behoben und auch noch ein paar Tipps. Freundliche Grüße |
Re: Tabelle mit eigenem Text drucken
Hallo es ist zwar schon länger her aber ich hab noch eine Frage:
Wie kann man das abändern sodass man dreispaltig druckenkann?
Delphi-Quellcode:
Ich hab schon viel ausprobiert aber es gelang mir bisher nicht.
function PadRight(const s: String; minLength: Cardinal; padChar: Char = ' '): String;
begin if Length(s) < minLength then begin SetLength(Result, minLength); Move(s[1], Result[1], Length(s)); FillChar(Result[Succ(Length(s))], minLength - Length(s), padChar); end else Result := s; end; Vielen dank! Freundliche grüsse Mars |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:30 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