Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 330

/ вопрос решён /

Доброго времени суток, уважаемые эксперты!
Подскажите пожалуйста с помощью какого компонента(диалоговое окно) можно указать путь к директории (например d:\win\sys\) и передать его в Edit?
(компонент SaveDialog1 требует указать и имя файла).

djemov Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: djemov (статус: Посетитель)
Вопрос отправлен: 27 октября 2009, 16:24
Состояние вопроса: решён, ответов: 2.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, djemov!
вот где то так

uses
  FileCtrl,   // нужно добавить для SelectDirectory
  Forms, Dialogs;
 
//
procedure TForm1.ButtonClick1(Sender: TObject);
var
  chosenDirectory : string;
begin
  // Ask the user to select a required directory, starting with C:
  if SelectDirectory('Select a directory', 'C:\', chosenDirectory)
  then ShowMessage('Chosen directory = '+chosenDirectory)
  else ShowMessage('Directory selection aborted');
end;

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 27 октября 2009, 16:38
Оценка за ответ: 5

Ответ #2. Отвечает эксперт: DNK

Здравствуйте, djemov!
В FileCtrl была полезная функция SelectDirectory. Можно также создать свой диалог с компонентами DyrectoryListBox и DriveComboBox с вкладки Win 3.1.

Приложение:
  1. s:=EditDir.Text;
  2.  
  3. EditDir.Text:=s;


Ответ отправил: DNK (статус: Студент)
Время отправки: 27 октября 2009, 16:42
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 28 октября 2009, 08:18; участников в обсуждении: 2.
djemov

djemov (статус: Посетитель), 27 октября 2009, 17:26 [#1]:

Всем спасибо!!!
min@y™

min@y™ (статус: Доктор наук), 28 октября 2009, 08:18 [#2]:

Мож вот так половчее будет:

// Вывод диалога выбора директории.
function BrowseForFolder(Handle: THandle;
                         const Title: string;
                         var Dir: string): Boolean;
var
  lpItemID : PItemIDList;
  BrowseInfo : TBrowseInfo;
  DisplayName : array[0..MAX_PATH] of char;
  TempPath : array[0..MAX_PATH] of char;
begin
  FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
 
  with BrowseInfo do
    begin
  hwndOwner:=       Handle;
  pszDisplayName:=  @DisplayName;
  lpszTitle:=       PChar(Title);
  //ulFlags:=         BIF_RETURNONLYFSDIRS + BIF_EDITBOX;
  ulFlags := BIF_RETURNONLYFSDIRS or
             $0040 or
             BIF_EDITBOX or
             BIF_STATUSTEXT;
    end;
 
  lpItemID:=                   SHBrowseForFolder(BrowseInfo);
 
  Result:=                     lpItemId <> nil;
 
  if Result
    then begin
           SHGetPathFromIDList(lpItemID, TempPath);
           Dir:= TempPath;
           GlobalFreePtr(lpItemID);
         end;
end;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

31 января 2011, 19:36: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:30
Выполнено за 0.03 сек.