Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

open/save dialogs [D5, Win95/98, Win2k]


alexey1 ©   (2002-02-13 04:43:00) 

Здравствуйте всем! у меня проблама такого характера. не могу сделать один прог уже месяца два. вроде бы задача звучит просто, а вот сделать не могу и всё. значит так: имеются стандартные диалоговые окна открытия или сохранения файлов и мне средствами win api нужно занести в менюшку путь по которому в данный момент отображаются папки и файлы, а также по выбору из этого меню заставить этоже диалоговое окно сменить путь отображения папок и файлов (что-то типа избранных путей, которые пользователь себе выбирает, что бы потом не ползать по всему диалоговому окну, ища нужный путь). что я тоько не делал и с помощью шпиона сообщений spy++ отслеживал сообщения, которые происходят при переключении между папками и читал различные хелпы и MSDN,смотрел исходники dialogs.pas,dlgs.pas и многое многое другое, а вот на вашей конференции к сожалению пока ответов на свои вопросы не получал.
накопал кучу функций и сообщений. голова уже кругом идет от всего этого. ну вот к примеру стандартные сообшения диалогов:
cdm_getfolderpath...... , мноое пробую, но неработает. есть такие проги как access folders, qfolders - вот что-то типа такого же мне и надо.
Ребят!!!! может кто-нибудь подумает по этой теме или может у кого-нибудь уже что-нибудь подобное есть?????

Если никто ничего по данной тематике не знает, хоть, привет передайте что ли!!!!!!!!!

Буду очень признателен всем за помощь!!!!!!!!!!!!!!


Лёша   (2002-02-15 00:42:00) [1]

А как я могу что-то вписать или на что-то нажать, когда мне не известны даже дескрипторы элементов диалога.
Можно добавлять компоненты к стандартному диалогу как это сделано в Delphi, например TOpenDialog --> TOpenPictureDialog. К сожалению, это единственный известный мне пример на Delphi (и не только на Delphi, а вообще). К томуже эти элементы могут только передавать данные главной программе, как в IE5 диалог "Сохранить как..." [Кодировка]. А мне надо, чтобы окно диалога менялось от моих элементов (как в Database Desktop диалог Open Table [Alias]).
Неужели для Delphi эта тема закрыта???

P.S. Может кто из на Сильников знает: как модифицировать стандартные диалоги?


nikkie   (2002-02-14 09:38:00) [2]

а ты не пробовал просто вписать путь к интересующему тебя каталогу, а потом "нажать" кнопку open?


Лёша   (2002-02-13 23:14:00) [3]

Можно добавить какой-нибудь элемент управления на стандартный диалог и естественно методы к элементу.
В приведенном примере я беру TOpenPictureDialog (чтобы долго не возиться), прячу все ненужное, добавляю кнопку и событие на нее - NavigateClick.

type
TOpenExtDialog = class(TOpenPictureDialog)
OpenB: TButton;
procedure NavigateClick(Sender: TObject); virtual;
constructor Create(AOwner: TComponent); override;
end;

implementation

{ TOpenExtDialog }

constructor TOpenExtDialog.Create(AOwner: TComponent);
var PicPan: TPanel;
begin
inherited Create(AOwner);
(FindComponent("PaintPanel") as TPanel).Visible:=False;
(FindComponent("PreviewButton") as TSpeedButton).Visible:=False;
(FindComponent("PictureLabel") as TLabel).Visible:=False;
PicPan:=(FindComponent("PicturePanel") as TPanel);

OpenB:=TButton.Create(PicPan);
with OpenB do
begin
SetBounds(77, 1, 45, 22);
Caption:="Open C:";
OnClick := NavigateClick;
Parent:=PicPan;
end;
end;

procedure TOpenExtDialog.NavigateClick(Sender: TObject);
begin
InitialDir:="C:";
//здесь перерисовка диалога
//или что-то типа следующих двух строк
DestroyWindow(GetParent(Handle));
Execute;
end;


Если брать конкретную задачу перехода по заданному пути, то она сводится к решению одной из двух задач:
1) Перерисовать/перестроить диалог без его терминации.
2)А если его удалять, а потом запускать то в программе метод Execute использовать нельзя. Т.к. Execute в случае нажимания на OpenB будет возвращать False. Т.е. надо писать свой ExecuteExt например, который бы следил за всеми движениями и возвращал True если файл найден.

Хотелось бы услышать ответы, особенно от тех кто знает 1) вариант.


McSimm   (2002-02-13 10:36:00) [4]

>alexey1
Привет :)

Внимательно перечитал несколько раз. Но суть проблемы не смог поймать.
Событие OnFolderChange ничем не поможет?
Или диалоги показываются без использования компонент. Тогда callback функции можно использовать для отлова момента изменения.

И где меню, действительно. В диалоге? Доступно одновременно с диалогом?


Shaman_Naydak   (2002-02-13 10:19:00) [5]

SaveDialog1.InitialDir:="C:\"
например, не пробовал делать? :))
или ты менюшку хочешь прямо в стандартный диалог вставить?


Наверх

Титульная страница Поиск, карта сайта Написать письмо