2013-03-12 11 views
6

Wenn ich die Filename-Eigenschaft eines TFileOpenDialogs festlegen und dann ausführen, sehe ich nur die letzten 14 Zeichen des im Feld Dateiname ausgewählten Dateinamens. Wenn ich Home drücke, kann ich sehen, dass die gesamte Zeichenfolge da ist, aber ich möchte es natürlich korrekt anzeigen. Ich habe auf zwei Windows 7 und einem Windows 8 Rechner mit den gleichen Ergebnissen getestet. Hat jemand Vorschläge oder Hinweise zur Lösung des Problems?Festlegen der Dateinameneigenschaft für TOpenFileDialog

FileOpenDialog1.FileName := 
    'C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\available_downloads_en.htm'; 
if FileOpenDialog1.Execute then 
    ShowMessage(FileOpenDialog1.FileName); 

Anfangsanzeige zeigt Problem: Image showing problem

Die gesamte Zeichenfolge nach Start drücken: How I think it should look

+3

Dies ist ein Fehler des IFileDialog, es scheint, in Windows 7 eingeführt wurde, lesen Sie http://social.msdn.microsoft.com/Forums/en-US/windowsuidevelopment/thread/c0c79498-3399-4346-b514 -b15336cd7c68/ – RRUZ

+2

Ja, das ist bekannt. –

Antwort

7

TFileOpenDialog ist nur eine dünne Hülle um die Microsoft IFileDialog Schnittstelle auf Windows Vista und höher. Sie haben keine Kontrolle darüber, wie sich der Dialog verhält, wenn er angezeigt wird. Wenn es nur die letzten Zeichen zeigt (und ich konnte dieses Verhalten auf meiner Win7-Box reproduzieren), dann ist das einfach so, wie der Dialog im Allgemeinen funktioniert. Allerdings erlaubt IFileDialog erlaubt den absoluten Ordner Pfad und nur der Dateiname separat festgelegt werden, und so sollten sie verwendet werden, aber TFileOpenDialog macht nicht diese Trennung, leider (Embarcadero Bug?). Also, wenn Sie diese Funktionalität benötigen, müssen Sie IFileDialog direkt verwenden und TFileOpenDialog überhaupt nicht verwenden.

+0

Sie können den 'IFileDialog' von' TFileOpenDialog' erhalten. Keine Notwendigkeit, es vollständig aufzugeben. –

+1

Worum geht es im zweiten Teil der Antwort? Sicherlich präsentiert der Delphi-Wrapper den vollständigen Pfad zur Datei, aber wenn Sie dies festlegen, wird der Ordner geändert und die Datei geändert. Ich kann nicht sehen, wie das die Frage angeht. Ein einfaches "Dies ist ein bekanntes Problem ohne Workaround" würde genügen. –

+0

@DavidHeffernan: 'TFileOpenDialog' erstellt seine 'IFileDialog'-Instanz erst, wenn' Execute() 'aufgerufen wird. Zu diesem Zeitpunkt ist es zu spät, die Eigenschaften des' TFileOpenDialog's zu ändern, es sei denn, Sie leiten von 'TFileOpenDialog ab 'und überschreiben' Execute() 'mit Ihrer eigenen Implementierung. –

Verwandte Themen