![]() |
Funktionsaufruf in mehreren Forms
Ich habe mir die schöne Routine kopiert.
Meine Anwendung besteht aus mehreren Formularen (Form1 bis Form4) In allen units soll diese Funktion verwendet werden. Ich habe mir nun gedacht, daß ich in der main-Form (Form1) einmal die Funktion erstelle und sie dann im gesamten Projekt an mehreren Stellen aufrufen kann. Das muß doch sicher möglich sein. Das ist doch das Prinzip von Unterprogrammen. Aber glaubt mir ich kriegs nicht hin!! Hier der Code der unit4
Delphi-Quellcode:
implementation
uses Konvert_Unit1; {$R *.DFM} function MyShowMessage(const AMessage: string; AFontSize: Integer): Integer; var dlg: TForm; begin dlg := CreateMessageDialog(AMessage, mtInformation, [mbOK]); try dlg.Position := poScreenCenter; dlg.ScaleBy(AFontSize, dlg.Font.Size); Result := dlg.ShowModal; finally dlg.Free; end; end; procedure TForm4.Button3Click(Sender: TObject); var prog : String; Datei1, Datei2: String; begin Prog:= Form1.Programm; Datei1 := 'C:\hdh\Deckel\'+prog; Datei2 := 'C:\DOS_PROG\DDI3\DAT\%P99.dat'; CopyFile(PChar(Datei1),PChar(Datei2),false); MyShowMessage('Übertragung durchgeführt', 12); end; |
AW: Funktionsaufruf in mehreren Forms
Erstelle Dir eine Helfer Unit, da machst Du alle Hilfs-Funktionen rein.
Binde in jeder FormUnit diese HelferUnit rein damit die Funktion auch genutzt werden kann. Ps: Die Helfer-Unit nicht auf Formulare zugreifen lassen, das mach in den Formularen mit der Auswertung der Hilfs Unit. |
AW: Funktionsaufruf in mehreren Forms
Oder ist Deine Frage = "Wie erstelle ich eine Helfer Unit und binde diese ein?"
Delphi-Quellcode:
Ergänze hier das Uses !
unit DomPerleHelfer;
interface uses // hier trag alles ein was diese Unit für ihre sub-funktionen benötigt. // ich habe nicht getestet auf welche Units deine MyShowMessage basiert. function MyShowMessage(const AMessage: string; AFontSize: Integer): Integer; implementation function MyShowMessage(const AMessage: string; AFontSize: Integer): Integer; var dlg: TForm; begin dlg := CreateMessageDialog(AMessage, mtInformation, [mbOK]); try dlg.Position := poScreenCenter; dlg.ScaleBy(AFontSize, dlg.Font.Size); Result := dlg.ShowModal; finally dlg.Free; end; end; end. Binde DomPerleHelfer in jeder Unit mit der Uses Anweisung ein wo Du MyShowMessage() brauchst. Fertig. |
AW: Funktionsaufruf in mehreren Forms
Der Tipp ist gut, ich werde ihn versuchen, leider heute nicht mehr.
Was mich allerdings irritiert ist, die Form1unit1 ist überall schon eingebunden, warum funktioniert es nicht, wenn alle Funktionen in der Form1unit1 definiert werden? |
AW: Funktionsaufruf in mehreren Forms
Glaskugel sagt: weiß nicht ohne Code zu kennen aber wahrscheinlich ein Benutzerfehler.
|
AW: Funktionsaufruf in mehreren Forms
Zitat:
So könnte man das machen, wobei kein guter Programmierstil.
Delphi-Quellcode:
PS: Bitte deinen Code in Delphi Tags einschliessen, da der Code dann besser sichtbar ist.
unit Unit21;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TForm1 = class(TForm) Button3: TButton; procedure Button3Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } function MyShowMessage(const AMessage: string; AFontSize: Integer): Integer; end; var Form1: TForm1; implementation {$R *.dfm} function TForm1.MyShowMessage(const AMessage: string; AFontSize: Integer): Integer; var dlg: TForm; begin dlg := CreateMessageDialog(AMessage, mtInformation, [mbOK]); try dlg.Position := poScreenCenter; dlg.ScaleBy(AFontSize, dlg.Font.Size); Result := dlg.ShowModal; finally dlg.Free; end; end; |
AW: Funktionsaufruf in mehreren Forms
Es ist eine Frage des Geschmacks ob man Hilfsfunktionen kreuz und quer in UnitX.pas dateien verteilt oder an einem Ort sammelt um Hilfsfunktionen lediglich über eine Einheitliche Unit abfragt.
In Form4 würde ich nicht auf die Idee kommen ein "Form1.MyShowMessage()" aufzurufen, bzw *1) würde ich in Form4 auch keine Form1 einbinden, egal, macht wie Ihr wollt solange es für Euch gut ist :thumb: *1) nur wenn ich tatsächlich Vorhabe mit Form1 etwas anzustellen, ansonsten generell nicht. |
AW: Funktionsaufruf in mehreren Forms
Hmm..
Ich würde eine Basis-Form erstellen, welche nur diese für alle verwendbaren Funktionen enthält, und dann alle anderen von dieser ableiten. Somit hat jedes (abgeleitete) Formular Zugriff auf diese abgeleiteten Funktionen. |
AW: Funktionsaufruf in mehreren Forms
Ich habe es jetzt über eine eigene Unit gelöst. Ich glaube, das ist am elegantesten.
Nochmal meinen herzlichsten Dank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:13 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