Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm läßt sich nicht beenden (https://www.delphipraxis.net/11665-programm-laesst-sich-nicht-beenden.html)

MaPaPiap 11. Nov 2003 15:00


Programm läßt sich nicht beenden
 
Hallo Hilfe,
wenn ich aus meinem Programm mit dem Code:
Delphi-Quellcode:
procedure TForm1.DruckvorschauClick(Sender: TObject);
begin
  with TQRPrinter.Create do
  begin
    Printerindex := -1;
    QRForm1.QuickRep.Page.PaperSize := PaperSize;
    Free;
  end;
  QRForm1.QuickRep.OnPreview := ShowPreview;
  QRForm1.QuickRep.Preview;  
end;

//***************************************************************************
procedure TForm1.Showpreview(Sender: TObject);
begin
  QRPreviewForm.QRPreview1.QRPrinter := TQRPrinter(Sender);
  QRPreviewForm.Show;
end;
eine Vorschau starte und wieder beende z.B. mit "close", läßt sich mein Programm nicht mehr beenden.
Es funktioniert noch alles, aber weder auf "close" noch auf den Systembutton "X" erfolgt eine Reaktion. Auch "onClose" wird nicht aufgerufen. :?:
Hat jemand eine Idee?

MrKnogge 11. Nov 2003 15:22

Re: Programm läßt sich nicht beenden
 
was steht denn in "OnClose" drinn ?

MaPaPiap 11. Nov 2003 15:28

Re: Programm läßt sich nicht beenden
 
Da schließe ich nur den ComPort.
Ich habe aber dort schon einen Breakpoint gesetzt: Der wird aber nicht erreicht.
Delphi-Quellcode:
   procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   ComPort1.close;   
end;
OnClose der Vorschau benutze ich nicht.
Ich vermute ich muß noch irgend etwas beenden oder schließen, aber was?

Tpercon 11. Nov 2003 15:34

Re: Programm läßt sich nicht beenden
 
Das müßte doch auch so aussehen:
Delphi-Quellcode:
with TQRPrinter do
  begin
    Create;
    Printerindex := -1;
    QRForm1.QuickRep.Page.PaperSize := PaperSize;
    Free;
  end;

MaPaPiap 11. Nov 2003 15:53

Re: Programm läßt sich nicht beenden
 
Ich muß erst "create"n bevor ich mit QRPrinter arbeiten kann.
Aber MrKnogge hat genau die richtige Frage gestellt: :wall:
Mit
Delphi-Quellcode:
procedure TQRPreviewForm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
   QRPreview1.Destroy;
end;
funktioniert es.
Ich weiß zwar nicht genau warum :gruebel: aber es klappt! :bounce1:
Vielen Dank noch mal. :hi:

Die Muhkuh 11. Nov 2003 15:57

Re: Programm läßt sich nicht beenden
 
Zitat:

Zitat von MaPaPiap
Ich muß erst "create"n bevor ich mit QRPrinter arbeiten kann.
Aber MrKnogge hat genau die richtige Frage gestellt: :wall:
Mit
Delphi-Quellcode:
procedure TQRPreviewForm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
   QRPreview1.Destroy;
end;
funktioniert es.
Ich weiß zwar nicht genau warum :gruebel: aber es klappt! :bounce1:
Vielen Dank noch mal. :hi:


Mach aus dem
Delphi-Quellcode:
  QRPreview.Destroy
ein
Delphi-Quellcode:
  QRPreview.free
Normalerweiße ist "free" besser wie "destroy"

Spider

MaPaPiap 11. Nov 2003 16:04

Re: Programm läßt sich nicht beenden
 
OK
Klappt auch
:hi:

Die Muhkuh 11. Nov 2003 16:10

Re: Programm läßt sich nicht beenden
 
Zitat:

Zitat von MaPaPiap
OK
Klappt auch
:hi:

Freut mich :wink:

MaPaPiap 12. Nov 2003 10:59

Re: Programm läßt sich nicht beenden
 
Hallo nochmal zusammen,
leider zu früh gefreut!
Nachdem ich folgenden Code ergänzt habe
Delphi-Quellcode:
procedure TQRPreviewForm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
   QRPreview1.Free;
end;
läßt sich mein Programm zwar beenden, aber ich kann die Vorschau nur einmal aufrufen.Beim zweiten Aufruf erfolgt eine EAccessViolation in der unten markierten Zeile. Wenn ich diese Zeile entferne, ist auch "QRPreview1.Free" nicht mehr notwendig (ich sehe zwar meinen Report nicht mehr aber ich kann Vorschau beleibig oft öffnen und das Programm beenden) ?=> Es schein noch irgendetwas activ zu sein, was das Beenden verhindert, wenn ich es aber mit Free komplett entferne wird es beim anzeigen nicht neu erzeugt.
Was ist das, und wie heißt der Busfahrer :wiejetzt:
Delphi-Quellcode:
procedure TForm1.DruckvorschauClick(Sender: TObject);
begin
  with TQRPrinter.Create do
  begin
    Printerindex := -1;
    QRForm1.QuickRep.Page.PaperSize := PaperSize;
    Free;
  end;
  QRForm1.QuickRep.OnPreview := ShowPreview;
  QRForm1.QuickRep.Preview;
end;

procedure TForm1.Showpreview(Sender: TObject);
begin
  QRPreviewForm.QRPreview1.QRPrinter := TQRPrinter(Sender); // <= !!!!!!!
  QRPreviewForm.Show;
end;
Ich komme nicht weiter. Ich vermute da fehlen mir einige Theoretische Grundlagen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz