![]() |
DataModule mit Kontruktor für eigene Klasse?
Guten Morgen :)
ich habe ein kleines Problem was mir ja eigentlich echt ein wenig peinlich ist, naja habe schon lange nichts mehr mit Delphi gemacht und mit Kontruktoren eigentlich noch nie was in Delphi, hoffe ihr könnt/wollt mir bei meinem kleinen Problem helfen. Also wie gesagt habe ich ein DataModul(keine Unit weil dort später die Komponenten für Outlook/Excel Zugriff platziert werden sollen), dort möchte ich jetzt einen Konstruktor für meine Klasse schreiben nur ich steh total auf dem Schlauch :( hab mir ein paar Hilfen von Delphitreff und Delphipraxis angeschaut aber irgendwie komm ich damit auf keinen grünen Zweig.
Delphi-Quellcode:
unit DmOutlookPro;
interface uses SysUtils, Classes; type TOutlookPro = class(TDataModule) private { Private-Deklarationen } var ordnerPfad : String; kontakt : TStringList; public { Public-Deklarationen } constructor TOutlookPro.Create(cOrdnerPfad : String); end; var OutlookPro: TOutlookPro; implementation constructor TOutlookPro.Create(cOrdnerPfad : String); begin inherited Create; ordnerPfad = cOrdnerPfad; end; {$R *.dfm} end.
Delphi-Quellcode:
Das habe ich zZ, mir wird aber der Fehler ausgegeben:"F1026 Datei nicht gefunden: 'TOutlookPro.dcu'".
unit UnOutlookImport;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, TOutlookPro; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var Outlook : TOutlookPro; begin Outlook = TOutLookPro.Create('test'); end; end. Ich hab nach der .dcu Datei gesucht konnte sie aber nicht im Installationsordner von CodeGear finden. Außerdem wird das .Create in der Zeile
Delphi-Quellcode:
nicht von der Codehilfe erkannt, liegt das vllt zusammen?
Outlook = TOutLookPro.Create('test');
Muss ich auf irgendwas besonderes achten wenn ich in einem Datamodul eine Klasse erstellen will oder habe ich gerade nur eine Denkblokade? oO ich weiß einfach nicht weiter, mag vllt auch daran liegen das ich, wie gesagt, in Delphi noch nie was mit Kontruktoren gemacht habe. Ich bedanke mich schonmal für alle Antworten :) lg Alex |
Re: DataModule mit Kontruktor für eigene Klasse?
Zitat:
|
Re: DataModule mit Kontruktor für eigene Klasse?
Und ist TDataModule nicht vom TComponent und will im Constructor ein Owner haben?
|
Re: DataModule mit Kontruktor für eigene Klasse?
Zitat:
außerdem sollte man den Constructor dann noch als reintroduce; virtual; kennzeichnen. Also etwa so:
Delphi-Quellcode:
Was aber dadurch nicht mehr korrekt funktioniert, ist die automatische Erzeugung von Delphi (in der DPR), weil hier der neue Konstruktor unbekannt ist und immer der alte verwendet wird!
constructor Create(aOwner: TComponent; cOrdnerPfad: string); reintroduce; virtual;
|
Re: DataModule mit Kontruktor für eigene Klasse?
Erstmal danke für eure schnelle Hilfe :)
Eine kurze Eläuterung was es mit
Delphi-Quellcode:
auf sich hat wäre sehr nett. Also aOwner: TComponent, reintroduce und virtual.
constructor Create(aOwner: TComponent; cOrdnerPfad: string); reintroduce; virtual;
Was muss ich jetzt im Aufruf des Konstruktors angeben? lg Alex |
Re: DataModule mit Kontruktor für eigene Klasse?
Die beiden Parameter
|
Re: DataModule mit Kontruktor für eigene Klasse?
Ich würde den Constructor besser belassen und cOrdnerPfad als Property anfügen (schlecki hat schon erklärt warum es hier dringend nötig ist)
|
Re: DataModule mit Kontruktor für eigene Klasse?
Ok dann werde ich das mal als Proberty versuchen, scheint um einiges unkomplizierter zu sein, danke für die Hilfe.
lg Alex |
Re: DataModule mit Kontruktor für eigene Klasse?
Wenn ich das richtig sehe, dann soll lediglich ein pfad besetzt werden. Wieso wird hierzu nicht einfach das datamodulecreate verwendet ?
|
Re: DataModule mit Kontruktor für eigene Klasse?
Hallo Alex,
ich verstehe das Anliegen noch nicht... Du willst einige Daten in einer Komponente verwalten? Das TDataModule ist im Grunde ein unsichtbares Formular, das in der IDE nicht sichtbare Komponenten darstellt und bestimmte Ereignisbehandlungen anbietet. In der IDE wirst Du Deine Ableitung nicht benutzen können (ich wüsste jedenfalls nicht wie). Und zur Laufzeit würde Dir wohl auch eine einfache Komponente reichen.
Delphi-Quellcode:
Die kannst Du dann registrieren und z.B. zur Entwicklungszeit in ein DataModul setzen oder auch dynamisch erzeugen...
TDCustom = class(TComponent)
private FEnabled: Boolean; FFileName: String; protected procedure SetEnabled(const Value: Boolean); virtual; ... public constructor Create(AOwner: TComponent); override; destructor Destroy; override; published property Enabled: Boolean read FEnabled write SetEnabled; property FileName: String read GetFileName write GetFileName; end; Oder habe ich etwas falsch verstanden? Stahli |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:43 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