Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi globale Funktionen? (https://www.delphipraxis.net/32519-globale-funktionen.html)

Leon de Bar 24. Okt 2004 16:34


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???

fkerber 24. Okt 2004 16:37

Re: globale Funktionen?
 
Hi!

Deklariere sie doch im Public-Abschnitt von Form1 und rufe sie dann mit Form1.Functionname auf.


Ciao Frederic

jim_raynor 24. Okt 2004 16:37

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.

Matze 24. Okt 2004 16:37

Re: globale Funktionen?
 
in Form2 einfach Form1 einbinden:

Delphi-Quellcode:
uses Unit1
Und die dort im public-bereich eingetragene Funkion müsste sich so aufrufen lassen:

Delphi-Quellcode:
Form1.Tuwas

Dani 24. Okt 2004 16:45

Re: globale Funktionen?
 
Hi :hi:

Die Suchfunktion hätte da eigentlich einiges liefern müssen. Dennoch:

Delphi-Quellcode:
//Unit1:
//...

type
 TForm1 = class(TForm)
  //...
 public
  function MyFunction: TMyResultType;
 end;
Wenn du in Unit2 nach implementation folgendes einfügst, hast du Zugriff auf Form1 und alle als public deklarierten Methoden.

Delphi-Quellcode:
unit Unit2

type
 TForm2 = class(TForm)
//...

implementation

Uses Unit1;

prodecdure TForm2.Button1Click(Sender: TObject);
begin
 Form1.MyFunction();
end;
Wenn das zu umständlich ist kannst du die Funktion auch einfach global deklarieren. Einfach den Funktionskopf zwischen VAR- und implementation-Abschnitt einfügen:

Delphi-Quellcode:
Unit Unit1;
//...

var
 Form1: TForm1;

function MyFunction: TMyResultType;

implementation

funtion MyFunction: TMyResultType;
begin
 Result := TMyResultType.Create;
 //...
end;
Auch hier musst du wieder die Uses-Klausel nach implementation einfügen, und zwar in allen Units, die diese Funktion verwenden. Viel Spass :mrgreen:

Leon de Bar 24. Okt 2004 16:50

Re: globale Funktionen?
 
:cyclops: Hi, danke. Mein Fehler war, daß ich TForm1.Funktion aufgerufen habe... *dummer leon, dummer dummer dummer leon* :oops:

Leon de Bar 24. Okt 2004 17:26

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...

fkerber 24. Okt 2004 17:53

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 17:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz