Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Form als Parameter übergeben? (https://www.delphipraxis.net/17763-form-als-parameter-uebergeben.html)

FBrust 9. Mär 2004 14:29


Form als Parameter übergeben?
 
Hallo,

ich habe in meinem Programm diverse Berichte, deren Berichtskopf immer gleich aussieht. Zur Vereinfachung möchte ich eine Prozedur schreiben, die diese Formatierungen übernimmt. Der Prozedur möchte ich den Namen des Formulars mit der Quickreport-Komponente übergeben und sie macht dann den Rest.

Also etwa so:

Delphi-Quellcode:
procedure PrepareReport(frmRep: TForm);
var strFile: string;
begin
    with frmRep do begin
      QRShape1.Brush.Color := GetColor('RepUp');
      QRShape1.Pen.Color := GetColor('RepUp');
      QRShape2.Brush.Color := GetColor('RepDown');
      QRShape2.Pen.Color := GetColor('RepDown');
    end;
end;
Allerdings wird beim Kompilieren "QRShape1" als undefinierter Bezeichner angemeckert, vermutlich weil frmRep kein Formular hinterlegt ist.

Hat vielleicht jemand einen Tip, wie ich das bewerstelligen kann?

Grüße
Frank

Wheelie 9. Mär 2004 14:38

Re: Form als Parameter übergeben?
 
Solltest die Prozedur im Interface-Teil "ankündigen":

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    procedure PrepareReport(frmRep: TForm);
... und in der eigentlichen Prozedur den Namen der Form ergänzen:

Delphi-Quellcode:
procedure TForm1.PrepareReport(frmRep: TForm); // vorausgesetzt deine Form heißt Form1
var strFile: string;
begin
    with frmRep do begin
      QRShape1.Brush.Color := GetColor('RepUp');
      QRShape1.Pen.Color := GetColor('RepUp');
      QRShape2.Brush.Color := GetColor('RepDown');
      QRShape2.Pen.Color := GetColor('RepDown');
    end;
end;
WICHTIG: Den formalen Paramter frmRep brauchst du dann nicht mehr!

FBrust 9. Mär 2004 14:44

Re: Form als Parameter übergeben?
 
Hallo Wheelie,

danke für Deine Antwort.

Ich vergaß zu erwähnen, dass die Prozedur in einer Unit liegt, der kein Formular zugeordnet ist, da hier Routinen enthalten sind, die von mehreren Programmteilen aus genutzt werden sollen.:oops:

Daher funktioniert "TForm1.PrepareReport" hier leider nicht.


Grüße
Frank

Hansa 9. Mär 2004 16:50

Re: Form als Parameter übergeben?
 
Du brauchst eine Standard-Form und mußt nur die Änderungen anpassen. Z.B. in der StandardForm einen leeren Kopf definieren, diesen vererben und bei den Nachkommen nach Wunsch anpassen.

Wheelie 9. Mär 2004 17:42

Re: Form als Parameter übergeben?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also ich denke, dass ich jetzt verstanden habe was du meinst. Habe der Anschaulichkeit wegen mal ein kleines Programm geschrieben. Das Programm beinhaltet 3 Forms und eine Unit (Unit4), in welcher sich die Prozedur befindet, mit der man die Captions der Forms ändern kann (von Form1 aus). Klick dich mal durch ... hoffe es hilft dir weiter.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:41 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