Puuuhhh... also ich glaube, hier wird völlig aneinander vorbei geredet... und anscheinend wurde auch das eigentliche Problem gar nicht verstanden
Also... zunächst mal geht es doch darum, eine allgemein verwendbare Funktion in einer Bibliotheksunit unterzubringen. Derartige Funktionen werden nicht als Methoden (einer Klasse), sondern als ganz normale (öffentliche) Funktionen/Prozeduren implementiert:
Delphi-Quellcode:
interface
procedure xyz(s: String);
implementation
procedure xyz(s: String);
begin
...
end;
Das "TForm." vor dem Prozedurnamen "xyx" war also der Fehler.
Wir wissen jetzt natülrlich nicht, was diese Prozedur eigentlich tun soll... aber falls diese Prozedur etwas
mit einem Formular tun soll, dann muss natürlich dieses Formular als Argument übergeben werden:
Delphi-Quellcode:
unit LibFormUtils;
uses
Forms;
interface
procedure LibFormXYZ(a_frm: TForm; a_sText:
String);
implementation
procedure LibFormXYZ(a_frm: TForm; a_sText:
String);
begin
...
end;
Diese Prozedur kann dann mit
jedem beliebigen Formular aufgerufen werden, und zwar egal von welcher Klasse dieses Formular abgeleitet ist und egal, wie dieses Formular heißt.
Der Aufruf kann so aussehen:
Delphi-Quellcode:
unit formMain;
interface
type
TfrmMain =
class(TForm)
...
private
procedure XXXX;
...
end;
...
implementation
uses
LibFormUtils;
procedure TfrmMain.XXXX;
begin
...
LibFormXYZ(Self, '
Ein Text');
...
end;
Nebenbei bemerkt, muss diese Prozedur auch nicht unbedingt aus einer Methode einer Formularklasse heraus aufgerufen werden, wie in diesem Beispiel. Eine solche Funktion/Prozedur ist
universell verwendbar, aus jedem beliebigen Kontext heraus (natürlich darf dann nicht "Self" als Argument übergeben werden, sondern die betreffende Formularvariable). Und darum ging es doch... eine universelle Funktion/Prozedur zu implementieren, die überall verwendbar ist