![]() |
ContextMenue in TFileListBox
Hallo Zusammen,
die Componente TFileListBoxEX hat ja die Option, dass man sich das normal ConTextMenue anzeigen lassen kann, um z.B. Dateien kopieren zu können. Ich aber das Problem, dass ich immer eine Fehlermeldung (Falscher Parameter) bekomme. Die TFileListBoxEX befülle cih mit nachfolgendem Code:
Delphi-Quellcode:
Der Hintergrund ist, dass ich nur die Information '4711' habe und in der TFileListBoxEX alle Dateien mit diesem Teilstring im Dateinamen angezeigt werden sollen.
procedure ListFiles(Pfad, FileName: string; FLB: TFileListBoxEx);
var I: integer; begin FLB.Clear; filename:='*'+fileName+'*'; FLB.Directory:=StringReplace(Pfad,'/','\',[rfIgnoreCase, rfReplaceAll]); for fileName in TDirectory.GetFiles(FLB.Directory, FileName, TSearchOption.soTopDirectoryOnly) do begin FLB.AddItem(FileName ,nil); end; end; Das Ergebnis ist, dass ich die in der TFileListBoxEX den Pfad und den Dateiname sehen (\\192.168.178.69\Zeichnungen\Z_4711.pdf) Der Fehler passiert hier ind der Unit FlCtrlEX:
Delphi-Quellcode:
Ich glaube, dass es in der Zeile
procedure TFileListBoxEx.MouseDown(Button: TMouseButton; Shift: TShiftState; X,
Y: Integer); {$IFDEF DELPHIXE2_LVL} var i: integer; fn: string; {$ENDIF} begin inherited; {$IFDEF DELPHIXE2_LVL} if (Button = mbRight) and SystemContextMenu then begin i := SendMessage(Handle, LB_ITEMFROMPOINT,0, MakeLong(X,Y)); if (i >= 0) and (i < Items.Count) then begin ItemIndex := i; fn := Directory +'\'+Items[i]; ShowSysContextMenu(fn, ClientToScreen(Point(X,Y))); end; end; {$ENDIF} end;
Delphi-Quellcode:
passiert. Mir ist aufgefallen, dass Directory den Pfad enthält (\\192.168.178.69\Zeichnungen) und item[i] den Pfad und den Dateinamen (\\192.168.178.69\Zeichnungen\Z_4711.pdf). Zusammen ergibt das \\192.168.178.69\Zeichnungen\\\192.168.178.69\Zeic hnungen\Z_4711.pdf. Das ist natürlich falsch.
fn := Directory +'\'+Items[i];
Hat jemand eine Idee, was ich korrigieren muss? Ich vermute, dass es in der Art und Weise, wie ich die TFileListBoxEX befülle unglücklich läuft... Vielen Dank Patrick |
AW: ContextMenue in TFileListBox
Mal dumm gefragt: was ist denn TFileListBoxEx? Ich kenne nur die TFileListBox auf dem Reiter Win 3.1.
|
AW: ContextMenue in TFileListBox
Wenn ich dich richtig verstanden habe, ist doch klar was passiert:
Mir fallen zwei Lösungen ein:
|
AW: ContextMenue in TFileListBox
UPS, mein Fehler: Es ist tatsächlich eine Komponente von TMS...
Ich habe es jetzt wie folgt gelöst:
Delphi-Quellcode:
Damit funktioniert es, hat nur den Nachteil, dass ich nicht in Unterordnern nach weiteren Dateien gucken kann, sondern nur in dem zugewiesenen...
procedure ListFiles(Pfad, FileName: string; FLB: TFileListBoxEx);
begin FLB.Clear; FLB.Directory:=StringReplace(Pfad,'/','\',[rfIgnoreCase, rfReplaceAll]); FLB.Mask:='*'+fileName+'*'; end; Aber ich glaube, so geht es. @uligerhardt: Ohne den Verzeichnisnamen habe ich es leider nicht realisiert bekommen... Patrick |
AW: ContextMenue in TFileListBox
Du hast ja den Quellcode der Komponente. Du könntest versuchen, die Zeile
Delphi-Quellcode:
fn := Directory +'\'+Items[i];
durch etwas a la
Delphi-Quellcode:
fn := System.IOUtils.TPath.Combine(Directory, Items[i]);
zu ersetzen (ungetestet ;-)). |
Dieses Thema wurde am "20. Nov 2018, 20:03 Uhr" von "Luckie" aus dem Forum "Programmieren allgemein" in das Forum "GUI-Design mit VCL / FireMonkey / Common Controls" verschoben.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 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 by Thomas Breitkreuz