![]() |
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 |
Re: Von Komponente auf Application zugreifen
Übergebe die Application-Instanz an die Komponente z.B. im Konstruktor
|
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:
Grüsse,
constructor xyz ( Anwendung : TApplication )
begin apppath := extractfilepath(Anwendung.exename); end. SCRaT |
Re: Von Komponente auf Application zugreifen
So geht das natürlich nicht, da die IDE den ererbten TComponent-Konstruktor verwendet.
|
Re: Von Komponente auf Application zugreifen
Zitat:
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:
Dort könntest Du z.B. den Applikationspfad in einer privaten Variable speichern:
constructor Create(AOwner: TComponent);
Delphi-Quellcode:
constructor TDeineKompoKlasse.Create(AOwner: TComponent);
begin inherited ; FPath := ExtractFilePath(Application.exename) ; end ; |
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 |
Re: Von Komponente auf Application zugreifen
Füge noch Forms hinzu
|
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:
Gruß Hawkeye
AppPath := ParamStr(0);
|
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 18:48 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