Es gibt verschiedene Wege, das zu lösen.
Erstmal zur Erklärung: Du hast eine Prozedur im Implementation-Abschnitt geschrieben. Du kannst nun in allen Funktionen, die unter der entspr. stehen, einen Aufruf dieser machen. Allerdings gilt das nur für
diese Unit.
Um die Prozedur/Funktion für mehrere Units öffentlich zu machen, gibt es
imho 2 Möglichkeiten:
1. Du deklarierst die Prozedur im Interface-Abschnitt. Dürfte in der Unit1 so aussehen:
Delphi-Quellcode:
unit unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,unit2;
type
TForm1 =
class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
(*******************************************)
procedure Meldung;
//diese Zeile hier
(*******************************************)
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure Meldung;
begin
ShowMessage('
Meldung');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Meldung;
end;
end.
2. Möglichkeit ist, dass du es als Klassenmethode deklarierst (z.B. in Form1). dann sieht es so aus:
Delphi-Quellcode:
unit unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,unit2;
type
TForm1 =
class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
procedure meldung;
// Und hier wichtig.
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Meldung;
// hier ganz wichtig
begin
ShowMessage('
Meldung');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Meldung;
end;
end.
Der Aufruf in diesem beispiel sähe so aus:
Delphi-Quellcode:
procedure blubb;
begin
Form1.Meldung;
end;
Es gibt auch andere Möglichkeiten, z.B. mit Interfaces, mit verschiedenen um-sich-schmeißenden Pointern, aber das wären wohl die geschicktesten Methoden