![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Как в OpenDialog заставить отображать только файлы без расширения? Пробовал *. - не работает.
|
|
#2
|
||||
|
||||
|
Интересная проблемка. Тоже поизголялся - не выходит каменный цветок. Похоже через фильтр этого не сделать. Похоже что для этого надо обрабатывать событие IncludeItem, но или оно похоже с багом, т.к. изменение значения Include никак не влияет на формируемый список.
Вот собственно, что я наваял в результате поиска решения. Код:
uses ShlObj;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
OpenDialog1.Execute;
Application.Terminate
end;
procedure TForm1.OpenDialog1IncludeItem(const OFN: TOFNotifyEx;
var Include: Boolean);
var
PathName: array[0..99] of Char;
Ext: String;
begin
SHGetPathFromIDList(PItemIDList(OFN.pidl), @PathName);
Ext := ExtractFileExt(PathName);
Include := Ext = '';
end; |
|
#4
|
||||
|
||||
|
событие OnIncludeItem срабатывает только при включеной опции:
Код:
OpenDialog1.Options:=OpenDialog1.Options+[ofEnableIncludeNotify]; Код:
Include:=False; |
|
#5
|
||||
|
||||
|
собрал все воедино:
Код:
unit Unit1;
interface
uses
ShlObj,
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure OpenDialog1IncludeItem(const OFN: TOFNotifyEx; var AInclude: Boolean);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.OpenDialog1IncludeItem(const OFN: TOFNotifyEx;
var AInclude: Boolean);
var
PathName: array[0..MAX_PATH-1] of Char;
Ext: String;
IDL: PItemIDList;
begin
SHGetPathFromIDList(PItemIDList(OFN.pidl), @PathName);
Ext:=ExtractFileExt(PathName);
AInclude:=Ext='';
IDL:=ofn.pidl;
if not AInclude then IDL^.mkid.abID[0]:=0;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
OpenDialog1.Options:=OpenDialog1.Options+[ofEnableIncludeNotify];
OpenDialog1.Options:=OpenDialog1.Options-[ofOldStyleDialog];
OpenDialog1.Filter:='*.*|?*';
OpenDialog1.OnIncludeItem:=OpenDialog1IncludeItem;
if OpenDialog1.Execute then ShowMessage(OpenDialog1.FileName);
PostMessage(Handle, WM_CLOSE, 0, 0);
end;
end.![]() |