AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Funktionsaufruf in mehreren Forms

Ein Thema von DomPerle · begonnen am 10. Jun 2018 · letzter Beitrag vom 12. Jun 2018
Antwort Antwort
DomPerle

Registriert seit: 26. Apr 2017
20 Beiträge
 
#1

Funktionsaufruf in mehreren Forms

  Alt 10. Jun 2018, 15:22
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;

Geändert von mkinzler (11. Jun 2018 um 05:59 Uhr) Grund: Delphi-Tag eingefügt
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Funktionsaufruf in mehreren Forms

  Alt 10. Jun 2018, 15:39
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.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Funktionsaufruf in mehreren Forms

  Alt 10. Jun 2018, 15:57
Oder ist Deine Frage = "Wie erstelle ich eine Helfer Unit und binde diese ein?"
Delphi-Quellcode:
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.
Ergänze hier das Uses !
Binde DomPerleHelfer in jeder Unit mit der Uses Anweisung ein wo Du MyShowMessage() brauchst.
Fertig.
Gruß vom KodeZwerg

Geändert von KodeZwerg (10. Jun 2018 um 16:02 Uhr)
  Mit Zitat antworten Zitat
DomPerle

Registriert seit: 26. Apr 2017
20 Beiträge
 
#4

AW: Funktionsaufruf in mehreren Forms

  Alt 10. Jun 2018, 16:08
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?
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Funktionsaufruf in mehreren Forms

  Alt 10. Jun 2018, 16:11
Glaskugel sagt: weiß nicht ohne Code zu kennen aber wahrscheinlich ein Benutzerfehler.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
zeras
Online

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.643 Beiträge
 
Delphi 12 Athens
 
#6

AW: Funktionsaufruf in mehreren Forms

  Alt 10. Jun 2018, 17:17
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?
Weil deine Funktion im Implementation Abschnitt steht. Damit wird sie nicht gefunden, da nicht global sichtbar.

So könnte man das machen, wobei kein guter Programmierstil.

Delphi-Quellcode:
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;
PS: Bitte deinen Code in Delphi Tags einschliessen, da der Code dann besser sichtbar ist.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Funktionsaufruf in mehreren Forms

  Alt 10. Jun 2018, 17:59
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

*1) nur wenn ich tatsächlich Vorhabe mit Form1 etwas anzustellen, ansonsten generell nicht.
Gruß vom KodeZwerg

Geändert von KodeZwerg (10. Jun 2018 um 18:06 Uhr)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
972 Beiträge
 
Delphi 6 Professional
 
#8

AW: Funktionsaufruf in mehreren Forms

  Alt 11. Jun 2018, 05:16
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.
  Mit Zitat antworten Zitat
DomPerle

Registriert seit: 26. Apr 2017
20 Beiträge
 
#9

AW: Funktionsaufruf in mehreren Forms

  Alt 12. Jun 2018, 12:42
Ich habe es jetzt über eine eigene Unit gelöst. Ich glaube, das ist am elegantesten.
Nochmal meinen herzlichsten Dank
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:46 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