![]() |
prozeduren in seperate unit auslagern (wie?)
Mein Hauptformular ist inzwischen sehr unübersichtlich geworden, weshalb ich dachte ich lagere functionen aus.
Habe eine unit 'Anmeldung' erzeugt und da meine prozeduren reinverschoben. Bei uses dannn noch im Hauptmenu mein Anmeldung eingetragen und in der unit anmeldung mein uses Hauptform = Hauptmenu. Sieht dann so aus:
Delphi-Quellcode:
Aber wie kann ich nun von meinem Hauptformular (Hauptmenu) auf die prozeduren in der Unit Anmeldung zugreifen??
unit Anmeldung;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, ExtCtrls, DBTables, Db, Grids, DBGrids; type TAnmeldung = class(TForm) //darf man das so als TForm schreiben?! procedure Benutzerlogout; procedure ButtonLogin; procedure ButtonKWabbrechen; end; implementation uses Hauptmenu, UnitAuditTrail; Bringt immer ne Syntax Fehlermeldung wenn ich dann auf ne Prozedur zugreifen will. |
Re: prozeduren in seperate unit auslagern (wie?)
huhu!
Hat denn deine Unit Anmeldung auch Komponenten? Oder sind da nur reine Funktionen drin? Wenn es nur ne reine Codesammlung ohne Komponenten ist, mach am besten keine TForm draus, sondern ne stinknormale Unit. Wenn du dann im "Hauptform" die separate Unit nur im Implementationsteil brauchst, reicht dein Verweis auf die neue Unit im USES-Teil unterhalb Implementation. Benutzen allerdings Funktionen deines Hauptformulars Datentypen oder sonst was aus der Unit, musst du sie im Oberen Teil der Unit angeben. Dann einmal die Separate Unit abspeichern und du kannst auf die Funktionen zugreifen ohne Probleme. Hat die neue Unit Komponenten und muss also als TFORM deklariert sein, dann musst du logischerweise ein create gemacht haben und kannst auf die funktionen über den variablennamen der Form Anmeldung zugreifen (zB. frm_Anmeldung.meinefunktion) |
Re: prozeduren in seperate unit auslagern (wie?)
Das war der falsche Ansatz. Du kannst die Methoden zu einer Klasse (in dem Moment gehören ja z.B. alle Methoden deines Menus dennuch zum Form) nicht in eine andere Unit auslagern.
Du musst z.B. nur den Implementation - Teil Deiner Unit in eine eigene Datei auslagern (z.B. mainmenu.pas) und diesen dann unter implementation anstelle des uses - Teil mit {$I mainmenu.pas} einbinden. Dann klappt das auch. Hier mal ein Beispiel: Unit1.pas:
Delphi-Quellcode:
TForm1.pas:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) procedure CheckBox1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} {$I TForm1.pas} // <-- hier der include end.
Delphi-Quellcode:
procedure TForm1.CheckBox1Click(Sender: TObject);
begin //do nothing end; |
Re: prozeduren in seperate unit auslagern (wie?)
del *.*
da war jmd. schneller. Ok, danke - werde mal probieren ob ich es hinbekomme :stupid: @phoenix: danke, Nachbar (Rav rulez 8) ) Hmm, also habe jetzt so mein Hauptform ergänzt. Nun bringt er aber die Fhelermeldung, dass er eine Deklaration erwartet aber uses findet (in der ausgelagerten pas). |
Re: prozeduren in seperate unit auslagern (wie?)
Moin,
also hab noch immer dasselbe Prob, dass ich die prozeduren nicht zum laufen bekomme, wenn ich diese ausgelagert und mit {x.pas} einbinde. Kommt immer die Fehlermeldung, dass er eine Deklaration erwartet aber uses findet (in der ausgelagerten pas). Muss diese anders aufgebaut sein, bzw. darf ich diese pas als unit erstellen? |
Re: prozeduren in seperate unit auslagern (wie?)
Nein, du darfst diese .pas nicht als unit erstellen. Am Anfang muss die .pas komplett leer sein und dann brauchst du nur deine gewünschten proceduren dort einfügen.
Also ohne unit, uses, interface, implementation usw. |
Re: prozeduren in seperate unit auslagern (wie?)
ok, habe jetzt ein textfile erstellt und da meine prozeduren eingefügt. Dann als anmeldung.pas (unit) gespeichert. Aber ich schätze jetzt bin ich wieder gleich weit?!
Also wie genau jetzt :? |
Re: prozeduren in seperate unit auslagern (wie?)
Jetzt kannst du die .pas ganz normal mit Delphi öffnen und deine prozeduren einfügen. Dann musst du nur noch
Delphi-Quellcode:
wie oben im Beispiel in die "alte" Unit eintragen.
{$I Anmeldung.pas}
|
Re: prozeduren in seperate unit auslagern (wie?)
Hallo Praktikant,
deine anmeldung.pas ist ja keine Unit, sondern "nur" eine Datei, die Quelltext enthält. Dieser wird mit
Delphi-Quellcode:
eingebunden. Eine richtige Unit hat ein interface und wird auch als solche im Projekt eingefügt (mit uses).
{$I Anmeldung.pas}
MfG fenni |
Re: prozeduren in seperate unit auslagern (wie?)
Das {$I Anmeldung\Anmeldung.pas} hatte ich bereits gemacht, aber ich habe wieder die Fehlermeldung (beim compilen), dass eine unit erwartet aber procedure gefunden wurde.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:11 Uhr. |
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