Einzelnen Beitrag anzeigen

Bea

Registriert seit: 23. Dez 2004
53 Beiträge
 
RAD-Studio 2009 Ent
 
#1

Eigenschaften von zur Laufzeit erzeugten Komponenten

  Alt 30. Nov 2006, 14:07
Hallo,
ich hab schon wiedermal eine Frage.
Zur Erläuterung:
Mein Progrämmchen überwacht mehrere Verzeichnisse auf das Hinzukommen von neuen Dateien.
Die zu überwachenden Verzeichnisse stehen in einer ini-Datei.
Das Überwachen mache ich mit der Komponente DirMonitor (hatte ich auch hier irgendwo gefunden und geht prima).

Für jedes Verzeichnis in der ini-Datei erzeuge ich zur Laufzeit eine entsprechende DirMonitor-Komponente, weise dieser einen Namen, die FilterAction, das jeweilige Verzeichnis und ein DirMonChange-Ereignis zu und setzte sie aktiv:
Delphi-Quellcode:
...
for i := 0 to stl_Verzeichnisse.count - 1 do
begin
DirMon[i] := TDirMonitor.Create(Self);
with DirMon[i] do
  begin
    Inc(merke_Anzahl_DirMon);
    Name := 'DirMon_' + sName;
    Directory := sVerz;
    FilterAction := FilterAction + [faADDED];
    FilterAction := FilterAction - [faREMOVED];
    FilterAction := FilterAction - [faMODIFIED];
    FilterAction := FilterAction - [faRENAMED_OLD_NAME];
    FilterAction := FilterAction - [faRENAMED_NEW_NAME];
    OnChange := DirMonChange;
    Active := true;
  end;
end;
...
Im DirMonChange-Ereignis möchte ich dann die jeweiligen Dateien nach und nach verarbeiten.

Delphi-Quellcode:
procedure TForm_Connector.DirMonChange(sender: TObject; Action: TAction; FileName: string);
var saktVerz:string;
begin
 ShowMessage(FileName); // z.B. Test.tif
 saktVerz:= ???
 ...
 
end;
Der aktuelle Dateiname steht mir ja im DirMonChange-Ereignis in FileName zur Verfügung.
Nun nützt mir aber nur der Dateiname allein nichts, ich brauche noch das Verzeichnis.
Das kommt aber bei FileName nicht mit.
Wie kann ich denn in dem DirMonChange-Ereignis auf die Eigenschaft Directory der gerade angesprungenen DirMonitor-Komponete zugreifen? (und bei Bedarf auch auf die anderen Eigenschaften?)

Wenn ich z.B. die Komponente DirMonitor schon von Anfang an mit auf das Formular platziere,
kann ich ja mit
Delphi-Quellcode:
 
saktVerz:=DirMonitor1.Directory;
direkt darauf Directory zugreifen.
Aber das will ich ja nicht.
Ich will ja erst zur Laufzeit für jedes Verzeichnis eine Komponete erzeugen.

Kann mir da bitte wieder jemand helfen?

Danke im Vorraus
Bea
  Mit Zitat antworten Zitat