Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Procedure TForm.xyz in Unit (https://www.delphipraxis.net/111114-procedure-tform-xyz-unit.html)

Fussball-Robby 29. Mär 2008 20:02


Procedure TForm.xyz in Unit
 
Hey, ich möchte mit eine Unit erstellen, in die ich alle möglichen Funktionen und Prozeduren packe. Diese Unit will ich dann unter uses eintragen, damit ich sie in meinen Projekten nutzen kann. Wie das geht, weiß ich auch. Ich habe nun aber ein anderes Problem.
Ich muss die Funktionen ja im Interface-Abschnitt deklarieren und in den Implementations-Abschnitt reinschreiben. Wenn ich jetzt aber z.B. so eine Prozedur machen will:
Delphi-Quellcode:
Procedure TForm.xyz(S: String);
begin
end;
Wie muss ich die dann oben deklarieren? Wenn ich jetzt Procedure TForm.xyz(S: String); in den Interface-Teil reinschreibe, klappt das nämlich nicht.
Hoffe, ihr könnt mir helfen.

Mfg

MrKnogge 29. Mär 2008 20:07

Re: Procedure TForm.xyz in Unit
 
Du kannst eine Klassen-Funktion nur in der Unit implementieren, in der die Klasse deklariert ist.

Fussball-Robby 29. Mär 2008 20:08

Re: Procedure TForm.xyz in Unit
 
Das heißt, es gibt keine Möglichkeit, eine solche Prozedur in eine Unit zu tun, ohne TForm zu deklarieren?

Noobinator 29. Mär 2008 20:08

Re: Procedure TForm.xyz in Unit
 
eine andere Frage: wieso willst du denn deine Proceduren als Methoden der Form implementieren?

mkinzler 29. Mär 2008 20:09

Re: Procedure TForm.xyz in Unit
 
Delphi unterstütz )noch) keine partielle Klassen. Alle Methoden müssen in der selben Unit deklariert werden.

Fussball-Robby 29. Mär 2008 20:11

Re: Procedure TForm.xyz in Unit
 
Zitat:

Zitat von Noobinator
eine andere Frage: wieso willst du denn deine Proceduren als Methoden der Form implementieren?

Da ich in manchen Prozeduren z.B. die Funktion ScreenToClient() benutze, für die ich eine TForm brauche, und ich will die Form ungerne als Parameter mitgeben.

Noobinator 29. Mär 2008 20:15

Re: Procedure TForm.xyz in Unit
 
Zitat:

Zitat von Fussball-Robby
Zitat:

Zitat von Noobinator
eine andere Frage: wieso willst du denn deine Proceduren als Methoden der Form implementieren?

Da ich in manchen Prozeduren z.B. die Funktion ScreenToClient() benutze, für die ich eine TForm brauche, und ich will die Form ungerne als Parameter mitgeben.

Dann realisieren das ganze doch einfach über einen Kreuzbezug.
Deine Formdeklaration ist doch bereits im interface teil.

Fussball-Robby 29. Mär 2008 20:21

Re: Procedure TForm.xyz in Unit
 
Zitat:

Zitat von Noobinator
Deine Formdeklaration ist doch bereits im interface teil.

Nein, ist sie ja eben nicht, da ich eine einfache Unit OHNE Form habe.

Noobinator 29. Mär 2008 20:27

Re: Procedure TForm.xyz in Unit
 
deine Main Unit sieht doch wie folgt aus:

Delphi-Quellcode:
unit Mainunit;

interface

uses unit2; //hier ein Uses auf deine unit2

type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;// globale Formvariable im interface teil

implementation

{$R *.dfm}
deine neue Unit so:

Delphi-Quellcode:
unit Unit2;

interface

implementation
uses Mainunit;//hier ein uses auf deine mainunit;

end.
wenn du das so machst, dann hast du einen Kreuzbezug zwischen deiner Mainunit und der Unit2.
D.H. beide Units greifen aufeinander zu.

Jetzt ist in deiner Mainunit ja
Delphi-Quellcode:
var:form1:Tform1;
im interface teil, und damit kannst du dank Kreuzbezug direkt drauf zugreifen, auch aus der Unit2 ;)

ich finde diese Lösung jedoch ziemlich bescheiden.
Denn wozu mache ich ne Modulare Unit, wenn beide alles kennen ;)
da kann man es gleich in eine Unit schreiben.

Fussball-Robby 29. Mär 2008 20:31

Re: Procedure TForm.xyz in Unit
 
Ok, so geht es natürlich. Ich will aber, wie im ersten Post beschrieben, eine einzelne Unit schreiben, die ich dann in alle Projekte einbinden will, um die Funktionen nicht jedesmal kopieren zu müssen. D.h., meine Unit muss eigenständig laufen, ohne irgendeine MainUnit.

Mfg


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 Uhr.
Seite 1 von 4  1 23     Letzte »    

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