![]() |
Label Print?
Hallo Leuts,
lässt sich eine Komponente wie Label auch drucken. Mit RichEdit gehts,weiss ich...aber auch die Caption eines Labels?? Und weil wir dabei sind :lol: gehts mit Shapes auch??? Schönen Sonntag!!! TOOOOOOOOOOOOOOOR für Spanien |
Hi,
es kommt drauf an wie du Druckst. Aber schonmal
Code:
probiert?
WriteLn(Printfile, Label1.Caption);
Grüsse, Daniel :) |
Danke,
ich versuch es das erste Mal. Also keine Ahnung wie und wo deine Zeile verwendet werden muss. Such grad Tuts darüber....bisher noch nichts |
Hallo Privateer,
Du könntest Deine Druck-Ausgabe selber formatieren. Über die Unit "Printers" und das Object "TPrinter" holst Du Dir ein Handle auf die Zeichenfläche (Canvas) des Druckers. Dort kannst Du dann mit TextOut(...) und DrawRect(...) etc. jegliche Form von Krativität austoben. Ist allerdings ein wenig aufwendiger. Grüße, Daniel |
Aaahh, dein Problem ist das du grundsätzlich nicht Drucken kannst.
Du könntest ja einfach Print; schreiben, aber das ist nicht das was du willst. Du kannst nämlich sachen so Drucken, als würdest du eine normale Textfile beschreiben. Indem du eine Datei mit AssignPrn(tf, 'LPT1'); öffnest und somit einfach nur WriteLn(blabla); benutzt. Printers in die uses aufnehmen. Das findet man sogar in der OH. Ich hab aber zur Zeit kein Dlephi, kann somit nicht nachsehen nach welchen Befehlen du suchen müsstest. Aber unter Printer, Printers, findest du bestimmt was. AssignPrn auch. Grüsse, Daniel :) |
Habs mir anders überlegt...
Ich möchte die Labels lieber vorher in eine Datei speicher.. diese kann ich wenns erforderlich immer noch ausdrucken. Also nochmal: Ich möchte sprichwörtlich die Labels "einsammeln" (sind Label1..Label12) und sie untereinander in einem Textfile abspeichern.. nimmt man da nun write SaveToFile oder sonstwas wäre Dankbar für Hilfe |
Alle Labels eines Fensters könntest Du folgendermassen einsammeln:
Code:
Und die Prozedur WriteToFile könnte folgendermaßen aussehen:
Procedure ScanLabels( aForm : TForm );
var index : Integer; Begin For index:= 0 To aForm.ComponentCount-1 Do Begin If (aForm.Component[index] is TLabel) Then With TLabel(aForm.Component[index]) Do WriteToFile( aForm.Name+'.'+Name+'.Caption:= '+Caption); End; End;
Code:
Ich habe weder die eine noch die andere Methode getestet, aber das Prinzip sollte in jedem Fall funktionieren.
Procedure WriteToFile( aString : String );
var aFile : TextFile; Begin AssignFile( aFile, 'C:\DATA.TXT' ); Reset( aFile ); WriteLn( aFile, aString ); CloseFile( aFile ); End; Grüße, Daniel |
Danke Daniel,
Componet ist ein undef. Bezeichner was muss ich noch machen??? |
Sorry. Es muss jeweils .Components lauten. Das 's' am Ende ist wichtig. :roll:
Grüße, Daniel |
Dankeschön...
PS:sieh mal unter Fragen/Anregungen nach |
Himmel, jetzt ist es WriteToFile
habs aber inder Class und als procedure hinzugefügt |
Hallo Privateer3000,
Zitat:
|
undefinierter Bezeichner..
HAAAAAAALLOOOOOO Spocki ! |
Hallo Privateer3000,
wenn du es als Methode in die Klassendefinion geschrieben hast, musst du die Procedure wie folgt definieren: Zitat:
|
Danke Spocki...jetzt kommt keine Fehlermeldungen mehr...
Aber wie kann ich das Schreiben kontrolliert starten? als durch Button beispielsweise?? jetzt sind es ja "normale" procedure'n |
Ich bin mir nicht sicher, obs hilft, aber Du kannst auch das komplette Form mit
Form1.Print; ausdrucken. (Wenns mal mehr als ein Label sein soll). |
Hallo Privateer3000,
es kommt darauf an, wann du die Label - Captions drucken möchtest. Auf Knopfdruck, beim Beenden des Programms oder bei welchem Ereignis. Der Aufruf ist dann einfach:
Code:
Wenn du aber sowieso die Methode ScanLabels als Methode der Klasse deiner Form deklariert hast, könntest du den Parameter aForm auch weglassen und dafür im Programmcode anstelle von aForm die Variable self verwenden. Außerdem hat die Procedure WriteToFile einen festeingestellten Programmnamen. Ich würde diesen als Parameter übergeben. Dann sähe das Ganze wie folgt aus:
ScanLabels(Self)
Code:
und
Procedure TForm1.ScanLabels(datNam : String );
var index : Integer; Begin For index:= 0 To Self.ComponentCount-1 Do Begin If (Self.Component[index] is TLabel) Then With TLabel(Self.Component[index]) Do WriteToFile( aForm.Name+'.'+Name+'.Caption:= '+Caption, datNam); End; End;
Code:
Der Aufruf würde dann lauten:Procedure TForm1.WriteToFile( aString, datNam : String ); var aFile : TextFile; Begin AssignFile( aFile, datNam ); Reset( aFile ); WriteLn( aFile, aString ); CloseFile( aFile ); End;
Code:
oder wie immer die Datei heißen soll.
ScanLabels('C:\Delphi\Test\Labels.Txt');
|
Auf Spocki ist, wie immer, Verlass !
Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:33 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