Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.18;
Скачать: [xml.tar.bz2];




Вниз

open/save dialogs 


alexey1   (2002-02-13 04:43) [0]

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

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

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



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

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



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

>alexey1
Привет :)

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

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



Лёша   (2002-02-13 23:14) [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) вариант.



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

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



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

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

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




Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.18;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.034 c
1-57759           Митрий                2002-04-05 16:32  2002.04.18  
Помогите чайнику. Не разобраться с TExcelworksheet


1-57668           khodov                2002-04-06 21:28  2002.04.18  
Люди!!! Ткните мне, пожалуйста, пальцем в утечку памяти.


1-57727           новенький в Делфи     2002-04-07 22:22  2002.04.18  
Закрытие формы


3-57611           bill133               2002-03-22 23:23  2002.04.18  
Какая БД лучше


3-57583           Sysoper               2002-03-26 12:27  2002.04.18  
At End Of Table