![]() |
Kann nicht aus Form2 drucken
hallo habe folgendes Problem:
habe eine Form1 auf der mehrere Editfelder sind die eine eingabe mittels z.b printer.canvas.TextOut(spalte1, -350, Edit1.Text); auf ein spezielle Position drucken ! funktioniert soweit perfekt. Jetz rufe ich von Form1 eine 2.Form auf wo auch wieder Editfelder gedruck werden sollen (selbe konzept wie in Form1) Nun ist es so das ich aus Form2 nicht drucken kann wenn ich vorherr etwas aus Form1 gedruckt habe. drucke ich nichts aus Form1 und wechsel sofort nach Form2 und drucke dann funktioniert es ! Was kann das sein ? |
Re: Kann nicht aus Form2 drucken
Hallo Andreas,
könnte an deinem print job (BeginDoc - EndDoc) handling liegen. Überschneiden sich die jobs vielleicht? Grüße vom marabu |
Re: Kann nicht aus Form2 drucken
Hast Du [oh]BeginDoc;[/oh] und [oh]EndDoc;[/oh] verwendet ?
|
Re: Kann nicht aus Form2 drucken
Hei danke erstmal für die schnellen Antworten :-D
also BeginDoc & Enddoch sind in beiden Units vorhanden leider versteh ich nicht ganz was mit dem Überschneiden gemeint ist (von Zeitfenster her kann ich auch längere Zeit warten bis ich den Druck von Form2 starte passiert aber trotzdem nichts) |
Re: Kann nicht aus Form2 drucken
Mit Überschneiden meinte ich, dass BeginDoc auf Form2 aufgerufen wird, bevor EndDoc auf Form1 ausgeführt wurde. Kannst du vielleicht etwas Code zeigen, mit dem man dein Problem nachstellen kann?
marabu |
Re: Kann nicht aus Form2 drucken
ok hier mal die beiden Units
unit1
Code:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, CPort, StdCtrls, jpeg, ExtCtrls, Printers, Menus, ColorGrd, CheckLst, ActnList, Buttons, ComCtrls; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; Button2: TButton; ComPort1: TComPort; Button3: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label12: TLabel; Label13: TLabel; Image1: TImage; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; Edit8: TEdit; PrintDialog1: TPrintDialog; Label9: TLabel; Button4: TButton; Button5: TButton; Button6: TButton; Label10: TLabel; Button7: TButton; Label11: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; RadioButton1: TRadioButton; RadioButton2: TRadioButton; RadioButton3: TRadioButton; RadioButton4: TRadioButton; RadioButton5: TRadioButton; RadioButton6: TRadioButton; RadioButton7: TRadioButton; RadioButton8: TRadioButton; RadioButton9: TRadioButton; RadioButton10: TRadioButton; RadioButton11: TRadioButton; Label18: TLabel; Label19: TLabel; SpeedButton1: TSpeedButton; procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure ComPort1RxChar(Sender: TObject; Count: Integer); procedure Button4Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormActivate(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; str, b, nummer, datum, zeit, gewicht, einheit, waage, nummer2 : string; spalte1, spalte2, zeile, farbe, farbe2 : integer; implementation uses Unit2; {$R *.dfm} procedure TForm1.Button2Click(Sender: TObject); begin application.Terminate; end; // zeigt den Setup Dialog // procedure TForm1.Button3Click(Sender: TObject); begin ComPort1.ShowSetupDialog; end; // hier wird der Port aktiviert // procedure TForm1.Button4Click(Sender: TObject); begin // memo1.Clear; Label10.caption := ('STABILUS Material '); // if ComPort1.connected then // ComPort1.Close // else // ComPort1.Open; end; // hier werden die Daten step by Step eingelesen // procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer); begin ComPort1.ReadStr(str, count); Memo1.text := Memo1.text + str; nummer := copy(Memo1.text, 1, 6); datum := copy(Memo1.text, 8, 8); zeit := copy(Memo1.text, 17, 5); gewicht := copy(Memo1.text, 24, 6); einheit := copy(Memo1.text, 31, 2); waage := copy(Memo1.text, 34, 2); Label1.caption := (nummer); Label2.caption := (datum); Label3.caption := (zeit); LAbel4.caption := (gewicht); Label5.caption := (einheit); Label6.caption := (waage); Label13.Caption := ('ERST DRUCKEN DANN NEU WIEGEN'); end; procedure TForm1.Button1Click(Sender: TObject); var zaehler : integer; begin zaehler := 1; spalte1 := 130; spalte2 := 550; memo1.Clear; Label13.caption := (' '); // Radio-button-test if RadioButton1.checked = True then begin farbe := clgray; farbe2 := clgray; end; if RadioButton2.checked = True then begin farbe := clgreen; farbe2 := clgreen; end; if RadioButton3.checked = True then begin farbe := clblue ; farbe2 := clblue; end; if RadioButton4.checked = True then begin farbe := clyellow; farbe2 := clyellow; end; if RadioButton5.checked = True then begin farbe := clMaroon; farbe2 := clMaroon; end; if RadioButton6.checked = True then begin farbe := clFuchsia; farbe2 := clFuchsia; end; if RadioButton7.checked = True then begin farbe := clpurple; farbe := clpurple; end; if RadioButton8.checked = True then begin farbe := clblack; farbe := clblack; end; if RadioButton9.checked = True then begin farbe := RGB(225,113,000); farbe := RGB(225,113,000); end; if RadioButton10.checked = True then begin farbe := clwhite; farbe2 := clwhite; end; if RadioButton11.checked = True then begin farbe := clgreen ; farbe2 := clblue ; //label4.Caption := ('+++++++'); end; // else //farbe := clwhite //end; Printer.beginDoc; //Font.Size := 14; SetMapMode (printer.canvas.Handle, MM_Lometric); Printer.Canvas.Font.style := [fsBold]; // hier die Farbkenzeichnung Printer.Canvas.Font.Color := farbe; printer.canvas.TextOut(spalte2, -70, label18.caption); Printer.Canvas.Font.Color := farbe2; printer.canvas.TextOut(spalte2, -100, label17.caption); Printer.Canvas.Font.Color := clRed; printer.canvas.TextOut(spalte1, -100, label10.caption); Printer.Canvas.Font.Color := clBlack; // ende Material farbe printer.canvas.TextOut(500, -20, label6.caption); printer.canvas.TextOut(spalte2, -20, label1.caption); printer.canvas.TextOut(720, -20, label3.caption); printer.canvas.TextOut(spalte1, -350, Edit1.Text); printer.canvas.TextOut(spalte2, -350, Edit2.Text); printer.canvas.TextOut(spalte1, -570, Edit3.Text); printer.canvas.TextOut(spalte2, -570, Edit4.Text); printer.canvas.TextOut(spalte2, -730, Edit6.Text); printer.canvas.TextOut(spalte1, -730, Edit5.Text); printer.canvas.TextOut(720, -860, Edit8.Text); printer.canvas.TextOut(spalte1, -860, Edit7.Text); printer.canvas.TextOut(spalte2, -1010, Label4.Caption); printer.canvas.TextOut(750, -1010, Label5.Caption); printer.canvas.TextOut(spalte1, -1010, Label2.Caption); // zweiteS Ettilett // hier die Farbmakierung Printer.Canvas.Font.Color := farbe; printer.canvas.TextOut(spalte2, -1230, label18.caption); Printer.Canvas.Font.Color := farbe2; printer.canvas.TextOut(spalte2, -1260, label17.caption); Printer.Canvas.Font.Color := clRed; printer.canvas.TextOut(spalte1, -1260, label10.caption); Printer.Canvas.Font.Color := clBlack; printer.canvas.TextOut(500, -1180, label6.caption); printer.canvas.TextOut(spalte2, -1180, label1.caption); printer.canvas.TextOut(720, -1180, label3.caption); printer.canvas.TextOut(spalte1, -1510, Edit1.Text); printer.canvas.TextOut(spalte2, -1510, Edit2.Text); printer.canvas.TextOut(spalte1, -1690, Edit3.Text); printer.canvas.TextOut(spalte2, -1690, Edit4.Text); printer.canvas.TextOut(spalte2, -1870, Edit6.Text); printer.canvas.TextOut(spalte1, -1870, Edit5.Text); printer.canvas.TextOut(720, -2000, Edit8.Text); printer.canvas.TextOut(spalte1, -2000, Edit7.Text); // printer.canvas.TextOut(600, -2150, Edit2.Text); printer.canvas.TextOut(spalte1, -2150, Label2.Caption); printer.canvas.TextOut(spalte2, -2150, Label4.Caption); printer.canvas.TextOut(750, -2150, Label5.Caption); Printer.NewPage ; // zaehler := zaehler +1; // hier die Farbkenzeichnung Printer.Canvas.Font.Color := farbe; printer.canvas.TextOut(spalte2, -70, label18.caption); Printer.Canvas.Font.Color := farbe2; printer.canvas.TextOut(spalte2, -100, label17.caption); Printer.Canvas.Font.Color := clRed; printer.canvas.TextOut(spalte1, -100, label10.caption); Printer.Canvas.Font.Color := clBlack; printer.canvas.TextOut(500, -20, label6.caption); printer.canvas.TextOut(spalte2, -20, label1.caption); printer.canvas.TextOut(720, -20, label3.caption); printer.canvas.TextOut(spalte1, -350, Edit1.Text); printer.canvas.TextOut(spalte2, -350, Edit2.Text); printer.canvas.TextOut(spalte1, -570, Edit3.Text); printer.canvas.TextOut(spalte2, -570, Edit4.Text); printer.canvas.TextOut(spalte2, -730, Edit6.Text); printer.canvas.TextOut(spalte1, -730, Edit5.Text); printer.canvas.TextOut(720, -860, Edit8.Text); printer.canvas.TextOut(spalte1, -860, Edit7.Text); printer.canvas.TextOut(spalte2, -1010, Label4.Caption); printer.canvas.TextOut(750, -1010, Label5.Caption); printer.canvas.TextOut(spalte1, -1010, Label2.Caption); // viertes Ettilett // hier die Farbmakierung Printer.Canvas.Font.Color := farbe; printer.canvas.TextOut(spalte2, -1230, label18.caption); Printer.Canvas.Font.Color := farbe2; printer.canvas.TextOut(spalte2, -1260, label17.caption); Printer.Canvas.Font.Color := clRed; printer.canvas.TextOut(spalte1, -1260, label10.caption); Printer.Canvas.Font.Color := clBlack; printer.canvas.TextOut(500, -1180, label6.caption); printer.canvas.TextOut(spalte2, -1180, label1.caption); printer.canvas.TextOut(720, -1180, label3.caption); printer.canvas.TextOut(spalte1, -1510, Edit1.Text); printer.canvas.TextOut(spalte2, -1510, Edit2.Text); printer.canvas.TextOut(spalte1, -1690, Edit3.Text); printer.canvas.TextOut(spalte2, -1690, Edit4.Text); printer.canvas.TextOut(spalte2, -1870, Edit6.Text); printer.canvas.TextOut(spalte1, -1870, Edit5.Text); printer.canvas.TextOut(720, -2000, Edit8.Text); printer.canvas.TextOut(spalte1, -2000, Edit7.Text); // printer.canvas.TextOut(600, -2150, Edit2.Text); printer.canvas.TextOut(spalte1, -2150, Label2.Caption); printer.canvas.TextOut(spalte2, -2150, Label4.Caption); printer.canvas.TextOut(750, -2150, Label5.Caption); Label10.caption := (' '); // end; Printer.endDoc; end; procedure TForm1.FormActivate(Sender: TObject); begin begin memo1.Clear; Label13.caption := (' '); if ComPort1.connected then ComPort1.Close else ComPort1.Open; end; end; procedure TForm1.Button5Click(Sender: TObject); begin Label10.caption := ('AUSFALL'); end; procedure TForm1.Button6Click(Sender: TObject); begin Label10.caption := ('2 A Material'); end; procedure TForm1.Button7Click(Sender: TObject); begin Label10.caption := ('Material gesperrt'); end; procedure TForm1.SpeedButton1Click(Sender: TObject); begin Form2.show; end; end. und hier die unit2
Code:
unit Unit2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Printers; type TForm2 = class(TForm) Button1: TButton; Button2: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; PrintDialog1: TPrintDialog; procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormActivate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.Button2Click(Sender: TObject); begin edit1.Clear; edit2.Clear; edit3.Clear; form2.close; end; procedure TForm2.Button1Click(Sender: TObject); var zeile1, zeile2, zeile3, zeile1a, zeile2a, zeile3a : integer; spalte : integer; begin spalte := 10; zeile1 := 360; zeile2 := 420; zeile3 := 480; zeile1a := 1510; zeile2a := 1570; zeile3a := 1630; Printer.beginDoc; Printer.Canvas.Font.style := [fsBold]; printer.canvas.Font.Size:= 14; printer.canvas.TextOut(spalte, zeile1, Edit1.Text); printer.canvas.TextOut(spalte, zeile2, Edit2.Text); printer.canvas.TextOut(spalte, zeile3, Edit3.Text); // seite 2 printer.canvas.TextOut(spalte, zeile1a, Edit1.Text); printer.canvas.TextOut(spalte, zeile2a, Edit2.Text); printer.canvas.TextOut(spalte, zeile3a, Edit3.Text); Printer.enddoc; end; procedure TForm2.FormActivate(Sender: TObject); begin Edit1.SetFocus; end; end. |
Re: Kann nicht aus Form2 drucken
Habe dir ein paar Änderungen angebracht:
Delphi-Quellcode:
marabu
unit Unit1;
interface procedure TForm1.Button2Click(Sender: TObject); begin Close; // warum Application.Terminate? end; procedure TForm1.Button1Click(Sender: TObject); begin ... Printer.beginDoc; // verhindert evtl. verschachtelten print job SpeedButton1.Enabled := not Printer.Printing; ... Printer.endDoc; SpeedButton1.Enabled := not Printer.Printing; ... end; end. |
Re: Kann nicht aus Form2 drucken
Hallo,
SpeedButton1.Enabled := not Printer.Printing; eingefügt aber immernoch keine änderung. kann es ggf sein das man die druckfunktion mit dem öffnen der 2.Form "resetten" müsste. gibt es dafür vieleicht einen befehl ?? So das mit form 2 die druckfunktion auch neu startet (ist jetzt einfach mal so ein schuß ins blaue :-) ) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 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