Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Kann nicht aus Form2 drucken (https://www.delphipraxis.net/51624-kann-nicht-aus-form2-drucken.html)

andreas2004 16. Aug 2005 07:37


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 ?

marabu 16. Aug 2005 07:41

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

turboPASCAL 16. Aug 2005 07:42

Re: Kann nicht aus Form2 drucken
 
Hast Du [oh]BeginDoc;[/oh] und [oh]EndDoc;[/oh] verwendet ?

andreas2004 16. Aug 2005 08:19

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)

marabu 16. Aug 2005 08:35

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

andreas2004 16. Aug 2005 09:04

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.

marabu 16. Aug 2005 09:19

Re: Kann nicht aus Form2 drucken
 
Habe dir ein paar Änderungen angebracht:

Delphi-Quellcode:
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.
marabu

andreas2004 16. Aug 2005 09:40

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