2 Proceduren vereinen
Hallo,
ich habe in meinem Formular einen Button, der einen Druckbefehl aufruft OHNE dass das Druckermenü erscheint wo ich den Drucker auswählen kann
Code:
In meinem Menü habe ich auch einen Druckbutton, der den gleichen Druckbefehl aufruft, nur dass man dort die Möglichkeit hat, den Drucker auszuwählen:
procedure THaupt_Form.BtnPrintClick(Sender: TObject);
var rec : TRect; begin //druckbefehl end;
Code:
Ich möchte gerne NUR einen Druckbefehl verwenden, und je nach dem welchen Button der User anklickt, soll der Druckbefehl ausgeführt werden. Entweder mit oder ohne PrintDialog.
procedure THaupt_Form.Drucken1Click(Sender: TObject);
var rec : TRect; begin if PrintDialog1.Execute then begin //druckbefehl end; end; |
AW: 2 Proceduren vereinen
Du kannst die Schaltflächen am Sender unterscheiden.
|
AW: 2 Proceduren vereinen
//druckbefehl in eine eigene Methode auslagern?
|
AW: 2 Proceduren vereinen
Quick and Dirty: den Sender auswerten.
Delphi-Quellcode:
if Sender = Drucken1 then
DoPrint := PrintDialog1.Execute else DoPrint := true; if DoPrint then //Druckbefehl |
AW: 2 Proceduren vereinen
Wie kann ich das verstehen mit "Schaltflächen am Sender unterscheiden"
Ist dann dies so richtig:
Code:
procedure THaupt_Form.BtnPrintClick(Sender: TObject);
var rec : TRect; begin DoPrint := true; if Sender = Drucken1Click then DoPrint := PrintDialog1.Execute; if DoPrint then end; |
AW: 2 Proceduren vereinen
Delphi-Quellcode:
Gruß
procedure Drucken(mitMenue:boolean);
begin if mitMenue then.... K-H |
AW: 2 Proceduren vereinen
Wie wäre es mit Ausprobieren? Allerdings fehlt da noch eine lokale Boolean-Variable, und bei mir hieß der auszuwertende Sender anders.
|
AW: 2 Proceduren vereinen
Ich versteh's nicht. Sorry.
|
AW: 2 Proceduren vereinen
Was genau verstehst du denn nicht?
Zitat:
Delphi-Quellcode:
if (Sender <> Drucken1) or PrintDialog1.Execute then
//Druckbefehl |
AW: 2 Proceduren vereinen
Ok, ich habs jetzt:
Code:
Beiden Buttons habe ich bei OnClick dieses Ereignis zugewiesen. Funktionieren tut es jetzt.
procedure THaupt_Form.Drucken1Click(Sender: TObject);
var rec : TRect; var DoPrint : boolean; begin if Sender = Drucken1 then DoPrint := PrintDialog1.Execute else DoPrint := true; if DoPrint then begin //Druckbefehl end; end; Irgendwie gefällt mir das aber nicht, da ich in der Procedure einen Button stehen habe. |
AW: 2 Proceduren vereinen
Das ist ja grauslich; deshalb macht man soetwas:
Delphi-Quellcode:
procedure THaupt_Form. Druckbefehl;
begin {...} end; procedure THaupt_Form.BtnPrintClick(Sender: TObject); begin Druckbefehl; end; procedure THaupt_Form.Drucken1Click(Sender: TObject); var rec : TRect; begin if PrintDialog1.Execute then begin Druckbefehl; end; end; |
AW: 2 Proceduren vereinen
Spitze, genau sowas hab ich gesucht.
Hab es zwar etwas ändern müssen, aber es funktioniert prima. DANKE nochmals |
AW: 2 Proceduren vereinen
Zitat:
|
AW: 2 Proceduren vereinen
Ja eben, ich dachte, genau das will er nicht :gruebel:
|
AW: 2 Proceduren vereinen
Der Unterschied zwischen Beitrag #1 und Beitrag #11 ist, dass er nur einmal die Funktion Druckbefehl pflegen muss.
|
AW: 2 Proceduren vereinen
Das kommt aber darauf an, was man sich hinter dem Kommentar in #1 vorstellen muss. So etwas kommt halt dabei heraus, wenn man mit Informationen geizt.
|
AW: 2 Proceduren vereinen
Wobei Viele auch gerne sowas machen:
Delphi-Quellcode:
Und das mit dem Button in der Prozedur.
procedure THaupt_Form.BtnPrintClick(Sender: TObject);
begin //Druckbefehl end; procedure THaupt_Form.Drucken1Click(Sender: TObject); begin if PrintDialog1.Execute then BtnPrintClick(nil); end; Das ist gäniger Alltag ... schließlich ist der Sender ja dafür da, also daß man ihn verwenden und/oder vergleichen kann. Man könnte aber auch das Property Tag nutzten, also das Property für den Programmierer, welches man z.B. bei Drucken1 auf 1 setzt und dann abprüft.
Delphi-Quellcode:
Wobei der Vergleich über die Variable aber einfacher, übersichtlicher, verständlicher und vorallem fehlerunanfälliger ist, gegenüber dem Tag.
procedure THaupt_Form.Drucken1Click(Sender: TObject);
begin if ((Sender as TComponent).Tag <> 1) or PrintDialog1.Execute then begin //Druckbefehl end; end; Aber wenn man die Variante mit
Delphi-Quellcode:
OOP-mäßig noch weiter fortführt, dann landet am Ende der komplette Funktions-Code in mindestens einer eigenen Klasse.
procedure THaupt_Form.Druckbefehl;
|
AW: 2 Proceduren vereinen
Zitat:
Zitat:
|
AW: 2 Proceduren vereinen
Unter "Druckbefehl" habe ich jetzt einfach mal interpretiert, dass er hier noch den Druck irgendwie aufbereitet.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:19 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