2013-03-12 18 views
6

Bir TFileOpenDialog dosyasının Filename özelliğini ayarlayıp çalıştırdığımda, Dosya adı alanında seçilen dosya adının sadece son 14 karakterini görüyorum. Ana Sayfası'a basarsam, tüm dizenin orada olduğunu görebilirim, ancak elbette düzgün bir şekilde görüntülenmesini isterim. Aynı sonuçları iki Windows 7 ve bir Windows 8 makinede test ettim. Sorunu çözmek için herhangi bir öneri veya ipucu var mı?TOpenFileDialog için dosya adı özelliğini ayarlama

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

Başlangıç ​​ekranı gösteren sorun: Image showing problem

Ev bastıktan sonra tüm dizeyi: How I think it should look

+3

Bu, IFileDialog'un bir hatasıdır, Windows 7'de tanıtılmış gibi görünüyor, bunu okuyun http://social.msdn.microsoft.com/Forums/en-US/windowsuidevelopment/thread/c0c79498-3399-4346-b514 -b15336cd7c68/ – RRUZ

+2

Evet, bu iyi bilinir. –

cevap

7

TFileOpenDialog sadece sonradan Windows Vista ve Microsoft'un IFileDialog arayüzüne etrafında ince bir sarıcı. İletişim kutusunun, göründüğünde nasıl davrandığını kontrol edemezsiniz. Yalnızca son karakterleri gösterirse (ve Win7 kutumda bu davranışı yeniden üretebildim), bu diyaloğun genel olarak nasıl işlediğinden daha basittir. Ancak, bununla birlikte, IFileDialog, mutlak klasör yoluna ve yalnızca ayrı olarak atanacak dosyaya izin vermez ve bu nedenle nasıl kullanılmaları gerektiği, ancak TFileOpenDialog bu ayrımı yapmaz veya göstermez, ne yazık ki (Embarcadero hatası?). Bu işleve ihtiyacınız varsa, IFileDialog'u doğrudan kullanmanız ve TFileOpenDialog'u kullanmamanız gerekir.

+0

"IFileDialog" öğesini TFileOpenDialog'dan alabilirsiniz. Tamamen terk etmeye gerek yok. –

+1

Yanıtın ikinci kısmı nedir? Şüphesiz Delphi sarıcı, dosyanın tam yolunu sunar, ancak bunu değiştirdiğinizde klasörde bir değişiklik ve dosyada bir değişiklik olur. Bunun sorunun nasıl çözüldüğünü göremiyorum. Basit, "bu hiçbir geçici çözüm ile bilinen bir sorun" olur. –

+0

@DavidHeffernan: 'TFileOpenDialog',' TFileOpenDialog'dan türetmedikçe, 'TFileOpenDialog' özelliklerinin kendisine nasıl atanacağını değiştirmek için çok geç olan 'Execute()' çağrılana kadar 'IFileDialog' örneğini oluşturmaz. Kendi uygulamanızla Execute() 'ı geçersiz kılın. –