Hi zusammen
Seit längerem verwende ich die von DeddyH entwickelte Komponente
TFileSearcher.
Mit der Komponente mitgeliefert werden auch einige Demos, unter anderem auch eine solche, die die gefundenen Dateien und deren kompletten Pfade in einer Listview anzeigt. Mit der Anwendung lassen sich sämtliche Komponenteneinstellungen verändern, mit denen festgelegt werden kann, welche Dateien gefunden werden sollen. So lässt sich auch das Property Filemask zur Laufzeit verändern. Defaultmässig ist dabei '*.*' angegeben - damit werden sämtliche Dateien beliebiger Endung gefunden.
Wenn ich diese Einstellung zur Laufzeit der Demo durch '*.pdf*' ersetze, findet mir die Komponente sämtliche Dateien mit dieser Endung, die sich im Startverzeichnis (Rootdir) befinden.
Soweit, so gut.
Wenn ich nun aber in meinem PathfinderFrame die Komponente einsetze, 'verhält sie sich richtig mies' - mit der Defaulteinstellung '*.*' findet sie alles. Wenn ich allerdings diese Einstellung ändere, geschieht nichts.
Um es genauer zu sagen:
Delphi-Quellcode:
procedure TPathFinderFrame.FileMaskInit;
var i: integer;
begin
for i := Low(VALID_EXTENSIONS) to High(VALID_EXTENSIONS) do
begin
if i = 5 then
CmbxFileType.Text := VALID_EXTENSIONS[i]; //IntToStr(FDefaultType);
CmbxFileType.AddItem(VALID_EXTENSIONS[i], nil);
end;
PathFinder1.FileMask := '*.pdf*'; //VALID_EXTENSIONS[5];
end;
Mit dieser bei Programmstart aufgerufenen Prozedur stelle ich den Defaultwert von PathFinder1.FileMask auf '*.pdf*' ein. TPathFinder ist die selbe Komponente (keine Nachkomme) wie TFilesearcher. Letztere habe ich erst vor einiggen Tagen von Deddh's Webseite heruntergeladen und in TPathfinder umbenannt. Hintergrund ist: Ich hatte damals, zur Entwicklungszeit, einige Tests mit der Komponente durchgeführt und war mir jetzt nicht mehr sicher, dass ich auch wirklich die finale Version der Komponente installiert habe. TPathFinder entspricht also genau der TFileSeacher-Komponente, wie sie bei DeddyH heruntergeladen werden kann.
Trotzdem liegt genau hier der Haken - rufe ich obige Prozedur aus dem Constructor meines TPathfinderFrames auf, wird zur Laufzeit die Suche gestartete und gleich wieder beendet. Im Treeview verschwindet das Chevron desjenigen Ordners, den ich erweitern wollte, und Dateien und Unterordner werden nicht angezeigt.
Dasselbe geschieht, wenn ich zur Designzeit den Wert des Filemask-Propertys im
OI auf '*.pdf*' ändere (natürlich ohne die Hochkommas) und obige Prozedure nicht aufrufe.
Leider habe ich die entscheidende Stelle trotz mehrmaligem Durchsteppen nicht gefunden. Wobei ich allerdings zugeben muss: sobald ich beim Durchsteppen in den Delphi-
Unit lande, beende ich, indem ich nun F9 drücke und damit wieder bei einem in meiner Anwendung gesetzten Haltepunkt lande, da ich in diesen Units keinen Hinweis auf den Fehler erwarte.
Im Verlauf meiner Suche nach einer Lösung des Problems habe ich allerdings noch etwas anderes entdeckt. Ich hatte mir einen Frame gebaut, der die in der ListviewDemo enthaltenen Masken zur Einstellung der Suchparameter enthält.
Dieser Frame enthält folgende Prozedur:
Delphi-Quellcode:
procedure TSearchOptionsFrame.CmbxSearchTypeCloseUp(Sender: TObject);
begin
FSearchType := CmbxSearchType.Text;
// FSearchType := TSearchType(CmbxSearchType.ItemIndex);;
end;
Hier erfahre ich per Hint, dass TSearchType in der
Unit Vcl.ComCtrls definiert ist und da nur 2 Elemente enthält. Allerdings enthält der Uses-Abschnitt noch keinerlei Hinweis auf die Komponenten-
Unit oder die DDFileUtils.
Auf den oben beschriebenen Fehler hat dies allerdings keinen Einfluss, da der Frame zwar Teil des Projektes, aber noch nicht in Betrieb ist. Allerdings stellt sich mir die Frage, wie ich hier Konflikte vermeiden kann.
Über einen Hilfreichen Hinweis zu meinem Problem würde ich mich sehr freuen.
Gruss
Delbor