![]() |
Delphi-Version: 10.3 Rio
Dateifilter definieren
Hi zusammen
Um meinen OpenFileFrame nach bestimmten Dateiendungen zu filtern, habe ich folgenden Typ definiert:
Delphi-Quellcode:
Bei Programmstart (z.B.) befülle ich damit eine Combobox:
Const
TExtendedArray : array[0..6] of string =('alle Dateien', '.pdf', '.Docx', '.bmp', '.nef', '.jpg', '.png'); //
Delphi-Quellcode:
Das Problem dabei ist: damit werden zwar zB. *.bmp - Dateien gefunden (und deren Nodes Enabled dargestellt), nicht aber *.BMP-Dateien.
function TFileSearchContainerFrame. FillCmbxFileType: String;
var i: integer; begin For i := Low(TExtendedArray) to High(TExtendedArray) do begin CmbxFileType.Items.Add(TExtendedArray[i]); if i = 0 then CmbxFileType.Text := CmbxFileType.Items[0]; end; Result := CmbxFileType.Text; end; Wie kann ich gleichzeitig auf zB. '*.bmp' und *.BMP, bzw *htm, *html, *.HTM und *.HTML prüfen? Gruss Delbor |
AW: Dateifilter definieren
Wie wird das ganze denn verwendet? Ich sehe nur das füllen einer Combobox!
Wenn du die Erweiterung selbst prüfst, hilft ja schon ein LowerCase(extension) = auswahl. |
AW: Dateifilter definieren
Hi hhcm
Das geschieht, wenn dem Treeview ein Knoten für die gefundene Datei hinzugefügt wird:
Delphi-Quellcode:
Gruss
procedure TOpenFileFrame.AddNewNode(ParentNode: TTreeNode; const aCaption,
aRealName: string; aIsdirectory: Boolean); var Node: TTreeNode; NameRec: PNameRec; Lextension: String; begin Node := TVFilesExplorer.Items.AddChild(ParentNode, aCaption); if aIsdirectory then begin ... ... end else begin Node.ImageIndex := 2; Node.SelectedIndex := 2; FPathlist.Add(aRealName); Lextension := ExtractFileExt(aRealName); // Hier wird die Übereinstimmung mit dem aktuellen Node.Enabled := False; // Datefilter (Dateiendung) festgestellt. Wenn nein, if (FFileType = Lextension) then // ist der eingefügte Node nicht Enabled Node.Enabled := true; if (FFileType = 'alle Dateien') then Node.Enabled := true; end; New(NameRec); NameRec^.RealName := aRealName; NameRec^.Caption := aCaption; NameRec^.IsDirectory := aIsdirectory; Node.Data := NameRec; end; Delbor |
AW: Dateifilter definieren
Ersetz mal den Vergleich
Delphi-Quellcode:
durchif (FFileType = Lextension) then
Delphi-Quellcode:
if SameText(FFileType, Lextension) then |
AW: Dateifilter definieren
oder gleich
Delphi-Quellcode:
Wobei, eine Konstante mit "T" ist doch ungewöhnlich.
if (FFileType = TExtendedarray[0]) then
Node.Enabled := True else begin Lextension := ExtractFileExt(aRealName); if SameText(FFileType,Lextension) then Node.Enabled := True else Node.Enabled := False; end; Gruß K-H |
AW: Dateifilter definieren
Liste der Anhänge anzeigen (Anzahl: 1)
Hi zusammen
Das obige Beispiel von p80286 hab ich fast identisch übernommen:
Delphi-Quellcode:
Erstmal wird Enabled auf False gestellt. Und anschliessend gibt es 2 Fälle, in denen Enabled True sein muss:
Node.Enabled := False; // Datefilter (Dateiendung) festgestellt. Wenn nein,
Lextension := ExtractFileExt(aRealName); if SameText(FFileType,Lextension) then Node.Enabled := True; if (FFileType = 'alle Dateien') then Node.Enabled := true;
Anhang 52106 Erstmal hab ich das Programm gestartet. Dann fülle ich die Combobox mit den Dateifiltern:
Delphi-Quellcode:
Aufgerufen wird so:
function TFileSearchContainerFrame. FillCmbxFileType: String;
var i: integer; begin For i := Low(TExtendedArray) to High(TExtendedArray) do begin CmbxFileType.Items.Add(TExtendedArray[i]); if i = 0 then CmbxFileType.Text := CmbxFileType.Items[0]; end; Result := CmbxFileType.Text; end;
Delphi-Quellcode:
Die Caption des Panels zeigt mir, dass das Property OpenFileFrame1.Filetype den richtigen Wert hat. Nun navigiere ich zu dem oberen der beiden Ordner mit den BMP-Inhalten und öffne ihn. Als Dateityp ist 'Alle Dateien' ausgewählt. Die Inhalte werden mir disabled angezeigt.
constructor TFileSearchContainerFrame.Create(AOwner: TComponent);
begin inherited; ... FFileExtension := FillCmbxFileType; Edit2.Text := FFileExtension; Panel1.Caption := OpenFileFrame1.Filetype; end; Ich ändere jetzt den Dateityp auf *.bmp und öffne den 2. Ordner. Dessen Inhalte werden mir Enabled angezeigt. Ich schliesse den ersten Ordner und öffne ihn wieder: es ändert sich nichts. Erstes Missverständnis: Bisher hab ich geglaubt, die Dateisuche würde jedesmal ausgeführt, wenn ich einen Ordner öffne. Die Enabledwerte im ersten Ordner beweisen, dass dem nicht so ist. Mit welchem Ereignis kann ich Nodes erreichen, die erzeugt und wieder ausgeblendet wurden und schliesslich wieder angezeigt werden? Gruss Delbor |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:44 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