![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обработка содержимого EditBox в стандартном TOpenDirDialog [Delphi, Windows]
Kotik666 © (2007-09-09 12:25:00)Когда открывается диалог выбора папок (с опцией odEditBox), то в сроке Edit забито имя последней папки, изменив которое на несуществующее диалог возвращает путь к текущей директории.
Как получить значение этой строки (для проверки на существование) или может быть есть возможность проверить наличие этого пути "силами" самого диалога?
Kotik666 (2007-09-13 09:26:00) [1]2Compiler
Благодарю!
Compiler (2007-09-12 21:59:00) [2]Текст из Edit'a можно взять так:
function GetEditText(hwin:HWND):string ;
var
l:integer; p:pchar;
begin
L:=SendMessage(hwin,WM_GETTEXTLENGTH,0,0)+1;
GetMem( p, l );
GetWindowText(hwin, p, l );
result:=p;
FreeMem( p, l );
end;
Kotik666 (2007-09-10 22:54:00) [3]Сразу не получилось победить этот Edit...
Может есть у кого готовая реализация этого вопроса, достойного FAQ (диалог же стандартный)?
Vladimir Kladov (2007-09-10 01:14:00) [4]Есть альтернативный, DirDlgEx.
Kotik666 (2007-09-09 23:06:00) [5]Мне тоже не нравится, но какой есть...
Благодарю за совет, сейчас буду разбираться с OnSelChanged.
Vladimir Kladov (2007-09-09 12:56:00) [6]Мне лично этот диалог ситемный вообще не нравится. Не говоря уже о тормозах, сам дизайн - просто перл на перле. Ну например, почему в момент открытия в фокусе находится кнопка OK, а не дерево. Как будто диалог открывается только для того, чтобы подтвердить выбор по умолчанию.
Насчет средств самого диаога - вроде нету. Но есть call back, у нас соответственно есть событие OnSelChanged. Вроде бы оно никак не обрабатывает содержимое edit'а, но добраться до него, в принципе можно. Взять из него текст и проанализировать еще пока диалог не закрылся. Или положить в переменную, чтобы после закрытия диалога смотреть.