Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2010, 02:45   #1
TaurusBrown
 
Регистрация: 31.10.2010
Сообщений: 4
Вопрос Как открыть ПАПКУ в OpenDialog?

Собственно, сабж.

Поясняю: нужно чтобы в диалоге при нажатии на кнопку "открыть" ,
в свойства OpenDialog записывался путь (напр. "C:\Program files\") (ну и, разумеется, диалог закрывается)

это возможно средствами стандартного диалога OpenDialog?
TaurusBrown вне форума Ответить с цитированием
Старый 31.10.2010, 09:36   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

In TOpenDialog Properties

DefaultExt
FileEditStyle
FileName
Files
Filter
FilterIndex
InitialDir
Options
OptionsEx
Title
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 31.10.2010, 12:02   #3
TaurusBrown
 
Регистрация: 31.10.2010
Сообщений: 4
По умолчанию

Хорошо, но как мне выбрать папку?
ведь если я в диалоге кликну по папке дважды (или нажму открыть), то она, соответственно, открывается. А мне не нужно, чтобы она открывалась.
TaurusBrown вне форума Ответить с цитированием
Старый 31.10.2010, 12:42   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это не делается через него.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 31.10.2010, 13:46   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Ничего не понял...
Это, что ли ?
Код:
procedure TForm1.Button10Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Label2.Caption:=ExtractFileDir(OpenDialog1.FileName);
//можно еще добавить
OpenDialog1.InitialDir:=Label2.Caption;
//хотя он и сам запоминает последнюю открытую папку
end;

Последний раз редактировалось mihali4; 31.10.2010 в 13:49.
mihali4 вне форума Ответить с цитированием
Старый 31.10.2010, 14:56   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ему надо диалог выбора папки, я просто не помню как его вызывать
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 31.10.2010, 15:17   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
ему надо диалог выбора папки, я просто не помню как его вызывать
Как показать диалог выбора директории

Код:
из модуля FileCtrl.

1. function SelectDirectory(const Caption: string; const Root: WideString;
out Directory: string): Boolean; overload;
2. function SelectDirectory(var Directory: string; Options: TSelectDirOpts;
HelpCtx: Longint): Boolean; overload;

из RxLib
TDirectoryEdit

function GetDirectory(nFolder: Longint): String;
var
Bi : TBrowseInfo;
lpName: array [0..MAX_PATH] of Char;
ppidl, aItemLst : PItemIDList;
begin
SHGetSpecialFolderLocation(Application.Handle, nFolder, ppidl);
FillChar(Bi, SizeOf(bi), 0);
Bi.hwndOwner := Application.Handle;
Bi.pidlRoot := ppidl;
Bi.pszDisplayName := lpName;
Bi.lpszTitle := 'Open directory';
aItemLst := SHBrowseForFolder(Bi);
CoTaskMemFree(ppidl);
SHGetPathFromIDList(aItemLst, lpName);
CoTaskMemFree(aItemLst);
Result := lpName;
end;

Пример использования (иначе не поймут, что такое nFolder)

// значения nFolder можно найти в описании
// к SHGetSpecialFolderLocation
// из Win32 Programmer's Reference (win32.hlp)

procedure TForm1.Button1Click(Sender: TObject);
begin
Caption := GetDirectory(CSIDL_DRIVES);
end;
mihali4 вне форума Ответить с цитированием
Старый 31.10.2010, 15:21   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
это возможно средствами стандартного диалога OpenDialog?
Я бы на енто не рассчитывал коли есть функция SelectDirectory
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.10.2010, 18:41   #9
TaurusBrown
 
Регистрация: 31.10.2010
Сообщений: 4
По умолчанию

Спасибо, когда установил компонент TDirtectoryEdit - всё получилось, только вот я не знаю, зачем нужна описанная вами функция. Я просто запускаю диалог, выбираю папку, а затем обращаюсь к свойству InitialDir или LongName объекта TDirtectoryEdit.
Всё равно спасибо за наводку на компонент.
TaurusBrown вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как по нажатию на батон открыть папку SeRhy Общие вопросы Delphi 2 02.12.2009 20:00
Как по нажатию на Button открыть документ, выбранный в OpenDialog Stranger333 Общие вопросы Delphi 4 12.11.2009 14:27
Создать ярлык => выбор файла => Открыть файл как папку??? Alex Cones Windows 6 05.10.2009 10:47
Как открыть папку,нажимая на ссылку в HTML-документе? Zap PHP 3 20.05.2009 00:19
Как через дельфи открыть папку в проводнике? t3ns0r Общие вопросы Delphi 6 28.03.2009 21:32