Текущий архив: 2002.04.18;
Скачать: CL | DM;
Вниз
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. Может кто из на Сильников знает: как модифицировать стандартные диалоги?
Страницы: 1 вся ветка
Текущий архив: 2002.04.18;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.005 c