![]() |
globale Funktionen?
Hi, gibt es globale funktionen? in der OH finde ich nichts oder ich stelle mich zu blöd an.
mein Problem: mein programm prüft zunächst ob eine DB existiert. wenn nicht wird diese erstellt... soweit so gut. bevor das tatsächliche prog startet öffne ich noch ein form in dem ich daten erfasse, die in der eben erstellten DB eingetragen werden müssen. da ich die connetction nicht von anfang an auf active setzen kann (wenn noch keine DB da ist schmiert mir Delphi ab) muss ich wohl in dem Form2 (das Form vor dem eigentlichen Programm) eine verbindung zur DB herstellen. ich bin mir nicht sicher ob ich das noch öfter benötige, deswegen dachte ich mir - ich nehme die funktion für die DBConnection als globale in form1 auf. aber wie rufe ich nun die funktion aus dem form2 heraus auf??? |
Re: globale Funktionen?
Hi!
Deklariere sie doch im Public-Abschnitt von Form1 und rufe sie dann mit Form1.Functionname auf. Ciao Frederic |
Re: globale Funktionen?
Die Funktion muss im interface-Teil einer Unit definiert sein. Schon kann von allen Units, die diese Unit einbinden darauf zugegriffen werden.
Beispiel:
Delphi-Quellcode:
unit TestUnit;
interface procedure MeineGlobaleFunktion; implementation procedure MeineGlobaleFunktion; begin // Mache irgendwas. end; end. |
Re: globale Funktionen?
in Form2 einfach Form1 einbinden:
Delphi-Quellcode:
Und die dort im public-bereich eingetragene Funkion müsste sich so aufrufen lassen:
uses Unit1
Delphi-Quellcode:
Form1.Tuwas
|
Re: globale Funktionen?
Hi :hi:
Die Suchfunktion hätte da eigentlich einiges liefern müssen. Dennoch:
Delphi-Quellcode:
Wenn du in Unit2 nach implementation folgendes einfügst, hast du Zugriff auf Form1 und alle als public deklarierten Methoden.
//Unit1:
//... type TForm1 = class(TForm) //... public function MyFunction: TMyResultType; end;
Delphi-Quellcode:
Wenn das zu umständlich ist kannst du die Funktion auch einfach global deklarieren. Einfach den Funktionskopf zwischen VAR- und implementation-Abschnitt einfügen:
unit Unit2
type TForm2 = class(TForm) //... implementation Uses Unit1; prodecdure TForm2.Button1Click(Sender: TObject); begin Form1.MyFunction(); end;
Delphi-Quellcode:
Auch hier musst du wieder die Uses-Klausel nach implementation einfügen, und zwar in allen Units, die diese Funktion verwenden. Viel Spass :mrgreen:
Unit Unit1;
//... var Form1: TForm1; function MyFunction: TMyResultType; implementation funtion MyFunction: TMyResultType; begin Result := TMyResultType.Create; //... end; |
Re: globale Funktionen?
:cyclops: Hi, danke. Mein Fehler war, daß ich TForm1.Funktion aufgerufen habe... *dummer leon, dummer dummer dummer leon* :oops:
|
Re: globale Funktionen?
Ich hab da leider gleich noch ne frage...
wenn ich auf meine komponente ADOTable1 doppeltklicke, dann bekommt man in der regel ja die felder angezeigt. meine ist lehr. sicher, weil ich die verbindung nicht aktiv habe... wie setze ich denn diese verbindung im quellcode active? Hintergrund: wenn ich daten in die Tabelle schreiben will sagt er mir, daß ich eine geschlossene versuche zu bearbeiten... |
Re: globale Funktionen?
Hi!
Mach bitte für die neue Frage einen nuen Thread auf. Unter diesem Titel kann diene Frage nicht gefudnen werden. Anders kommt die Hilfe bestimmt auch schneller :wink: Ciao Frederic |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 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