Also so funktioniert es schonmal gleich gar nicht...
Du deklarierst die Methode oben als zu TFormblatt gehörig, unterhalb von implementation jedoch gibt es gar keine Implementierung dazu. Denn die Prozedur, die da steht, gehört ja nicht zu TFormblatt. Die beiden Deklarationen passen nicht zusammen. --> Kompilierfehler.
Zudem sollte man nichts außerhalb von public usw. mit der Default-Sichtbarkeit deklarieren, sondern wirklich explizit das einordnen unter public, private usw.
Richtig wäre die Deklaration so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| type TMyForm = class(TForm) private public procedure MyProcedure; end;
var MyForm: TMyForm;
implementation
procedure TMyForm.MyProcedure; begin
end; |
Dann lässt sich das auch von anderen Units aus aufrufen mit MyForm.MyProcedure, sofern die Unit in der uses steht. Wenn man aber mehrere Instanzen des Formulars hat, muss man statt MyForm auch die richtige nehmen.
Was du jetzt meintest, ist eine Prozedur, die nicht auf das Formular zugreift, sondern lose in der Unit hängt. Die könnte man dann aber auch einfach in der anderen Unit deklarieren, wenn die nicht zum Formular gehört. Das ist hier wohl kaum gewünscht. Aber ich schreibe das trotzdem einmal dazu wie es dann richtig aussieht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| type TMyForm = class(TForm) private public end;
var MyForm: TMyForm;
procedure MyProcedure;
implementation
procedure MyProcedure; begin
end; |
Aufrufen geht dann in der Tat einfach mit MyProcedure. Man sollte daraus dann aber niemals das Formular ansprechen, da man dann bei mehreren Instanzen davon Probleme bekommt. So deklariert gehört eine Prozedur nur, wenn sie nichts mit einer bestimmten Instanz des Formulars zu tun hat.