![]() |
|
|
Регистрация | << Правила форума >> | 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; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
||||
|
||||
![]() Интересная проблема, пришлось немного погуглить даже
![]() Вот если тут почитать и немного модифицировать код - то получится решение проблемы Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#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. ![]() Пишу программы за еду. __________________ |