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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2023, 18:34   #1
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 627
По умолчанию Закрыть opendialog

Вводные данные:
Opendialog порождён временной переменной
Код:
var
  OD:TOpenDialog;
Код:
  OD:=TOpenDialog.Create(nil);
  If OD.Execute then begin
    {код}
  End;
  OD.Free;
Есть обработка горячих клавиш
Код:
  RegisterHotKey(Handle, 0, 0, 27);
Код:
procedure TForm1.hot_key(var Msg: TWMHotKey);
begin

  case Msg.HotKey of
     0: begin
          {Код 1}
     1: begin
          {Код 2}
        end;
  end;
end;
Вопрос: как сделать так, чтобы "код 1" закрыл диалоговое окно?

Зачем это надо: нужно в другой части программы обрабатывать Esc и переть Esc перестал закрывать диалоговые окна. Как вернуть это на место?
Kronos913 вне форума Ответить с цитированием
Старый 07.08.2023, 02:04   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от Kronos913 Посмотреть сообщение
Вводные данные:
Opendialog порождён временной переменной
Код:
var
  OD:TOpenDialog;
Код:
  OD:=TOpenDialog.Create(nil);
  If OD.Execute then begin
    {код}
  End;
  OD.Free;
Есть обработка горячих клавиш
Код:
  RegisterHotKey(Handle, 0, 0, 27);
Код:
procedure TForm1.hot_key(var Msg: TWMHotKey);
begin

  case Msg.HotKey of
     0: begin
          {Код 1}
     1: begin
          {Код 2}
        end;
  end;
end;
Вопрос: как сделать так, чтобы "код 1" закрыл диалоговое окно?

Зачем это надо: нужно в другой части программы обрабатывать Esc и переть Esc перестал закрывать диалоговые окна. Как вернуть это на место?
Желательно перевести на русский слово "переть" и объяснить что вернуть, куда и на какое место.
northener вне форума Ответить с цитированием
Старый 07.08.2023, 13:46   #3
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 161
По умолчанию

Самое очевидное решение же:
Код:
var
 od: TOpenDialog;
begin
   UnregisterHotKey(handle,0);
   try
   od:=TOpenDialog.Create(self);
   if od.Execute(Handle) then
    begin
      //...
    end;
   finally
    RegisterHotKey(Handle, 0, 0, 27);
   end;
DIONISKA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OpenDialog Ajempp Общие вопросы C/C++ 6 09.06.2011 14:05
БД и OpenDialog alexeybest БД в Delphi 3 17.02.2010 09:34
opendialog blackstersl Общие вопросы Delphi 4 18.09.2008 15:21
OpenDialog Rahim1993 Общие вопросы Delphi 20 21.01.2008 08:26
OpenDialog.Options:=OpenDialog.Options+[ofAllowMultiSelect]; necky Компоненты Delphi 2 11.08.2007 12:53