Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Von Komponente auf Application zugreifen (https://www.delphipraxis.net/85272-von-komponente-auf-application-zugreifen.html)

scrat1979 28. Jan 2007 12:49


Von Komponente auf Application zugreifen
 
Hallo zusammen,

bin gerade auf dem Weg die Komponentenprogrammierung zu lernen. Vorerst natürlich ohne sichtbare Komponenten. Bisher funktioniert es auch ganz gut, nur bei einem Problem komme ich momenten nicht weiter.
Ich möchte in der Komponente den Pfad der Anwendung (exe-Datei) in eine Property schreiben (z.B. AppPath := extractfilepath(application.exename) wird in Propery geschrieben). Leider lässt sich die Komponente dann nicht mehr compilieren, da die "Variable" Application natürlich nicht gefunden werden kann. Was mache ich hier falsch bzw. kann mir jemand eine Lösung nennen?!? Wäre wirklich klasse.

SCRaT

mkinzler 28. Jan 2007 12:56

Re: Von Komponente auf Application zugreifen
 
Übergebe die Application-Instanz an die Komponente z.B. im Konstruktor

scrat1979 28. Jan 2007 13:04

Re: Von Komponente auf Application zugreifen
 
Vielen Dank für die schnelle Antwort, aber wie gesagt - Komponentenanfänger :-). Wie genau müsste denn der Contructor aussehen. Ich möchte die Komponente über die Komponentenpalette auf eine form ziehen. Meinst Du in etwa folgendes?

Delphi-Quellcode:
constructor xyz ( Anwendung : TApplication )
begin
   apppath := extractfilepath(Anwendung.exename);
end.
Grüsse,
SCRaT

mkinzler 28. Jan 2007 13:06

Re: Von Komponente auf Application zugreifen
 
So geht das natürlich nicht, da die IDE den ererbten TComponent-Konstruktor verwendet.

Jelly 28. Jan 2007 13:10

Re: Von Komponente auf Application zugreifen
 
Zitat:

Zitat von scrat1979
Meinst Du in etwa folgendes?

Delphi-Quellcode:
constructor xyz ( Anwendung : TApplication )
begin
   apppath := extractfilepath(Anwendung.exename);
end.

Hallo SCRaT,

wohl eher nicht...

Komponenten unter Delphi müssen als Vorfahre mindestens TComponent oder eine davon abgeleitete Klasse haben, und bereits TComponent besitzt bereits einen Constructor, der wie folgt aussieht, und den Du für deine Zwecke anpassen musst. Die Parameter im constructor darfst du dabei nicht ändern:
Delphi-Quellcode:
constructor Create(AOwner: TComponent);
Dort könntest Du z.B. den Applikationspfad in einer privaten Variable speichern:

Delphi-Quellcode:
constructor TDeineKompoKlasse.Create(AOwner: TComponent);
begin
     inherited ;
     FPath := ExtractFilePath(Application.exename) ;
end ;

scrat1979 28. Jan 2007 13:21

Re: Von Komponente auf Application zugreifen
 
@Jelly

Genau so wie Du es vorgeschlagen hast habe ich es auch schon versucht. Doch leider ist dem Compiler Application.Exename nicht bekannt und es lässt sich eben nicht compilieren :-(

Ach so. Meine Komponente wurde von TComponent abgeleitet. Fehlt vielleicht noch etwas in der uses- Klausel? Habe dort "nur" SysUtils und Classes stehen.

SCRaT

mkinzler 28. Jan 2007 13:27

Re: Von Komponente auf Application zugreifen
 
Füge noch Forms hinzu

Hawkeye219 28. Jan 2007 13:28

Re: Von Komponente auf Application zugreifen
 
Willkommen in der Delphi-PRAXiS, SCRaT!

Um auf die Variable Application zugreifen zu können, mußt du die Unit Forms in die USES-Anweisung aufnehmen. Eine einfache (und wahrscheinlich bessere) Alternative wäre die Verwendung von ParamStr(0):

Delphi-Quellcode:
AppPath := ParamStr(0);
Gruß Hawkeye

scrat1979 28. Jan 2007 13:32

Re: Von Komponente auf Application zugreifen
 
Das wars :-) Perfekt, nun läuft es auch. Werde wohl nun in Zukunft öfters hier vorbeischauen. Nette Leute und schnelle + hilfreiche Antworten *g*. Danke vielmals.

SCRaT


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:37 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