Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.17;
Скачать: CL | DM;

Вниз

ESC в диалогах   Найти похожие ветки 

 
DeadMeat ©   (2007-05-19 14:19) [0]

Драсте.
Не знал куда запостить. Толи в начинающие, толи в основную. Поэтому выбрал середину.
Не могу решить такую вот проблемку. Есть диалоговая форма (модальная). На ней расположены кнопки OK и ОТМЕНА. Также на форме есть всяческие EditBox"ы и ComboBox"ы.
Что хотелось бы. Чтобы при нажатии на клавиатуре ESCAPE, форма закрывалась с результатом ModalResult = mrCancel. Все казалось бы просто. Выставил свойство Cancel у кнопки и ModalResult у нее же.
Ан нет. Если так сделать, то в случае, когда один из ComboBox"ов раскрыт, форма сразу закрывается. А хотелось бы закрыть "выпадший" список и лишь в случае если он закрыт, уже закрывать форму. Ну я думаю вы понимаете о чем я говорю. Т.е. если нету на форме кнопок со свойством Cancel = true, то все замечательно. Все интуитивно. Вот и хотелось сохранить эту "замечательность" у контролов и при наличии кнопочки "Отмена".

ЗЫ. Пытался делать изврат в OnKeyPress этого ComboBox"а с проверкой DroppedDown. Но вот почему то проверка не проходит. Может быть дело в том, что использую TcxComboBox (от DevExpress)?


 
Loginov Dmitry ©   (2007-05-19 14:39) [1]

А если через TActionList перехватывать Escape, и анализировать состояние комбобокса?


 
boriskb ©   (2007-05-19 15:04) [2]

А напомните мне:
Есть комбобокс, который на плашке, которая на табшите, который на форме и у всех у них одна и таже клавиша обработана - приоритеты как выстраиваются?


 
{RASkov} ©   (2007-05-19 15:06) [3]

> Т.е. если нету на форме кнопок со свойством Cancel = true,
> то все замечательно.

Ну так и убери их(кнопки со свойством Cancel = true)(т.е. поставь им свойство ModalResult=mrNone), а ESC обрабатывай вручки, где и проверяй состояния твоих комбиков.... KeyPreview=True у формы.... делов то.
Например:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
 if (Key=VK_ESCAPE) and not ComboBox1.DroppedDown then
  ShowMessage("Закрыть форму")
 else ShowMessage("Не закрывать");
end;


> [2] boriskb ©   (19.05.07 15:04)
> и у всех у них одна и таже клавиша обработана

Не понял....


 
Anatoly Podgoretsky ©   (2007-05-19 15:09) [4]

> DeadMeat  (19.05.2007 14:19:00)  [0]

А ты выставил это у формы, а не у кнопки


 
DeadMeat ©   (2007-05-19 16:30) [5]


> [1] Loginov Dmitry ©   (19.05.07 14:39)

Эмм... Идею понял, но от такого изврата и хотелось уйти.


> [3] {RASkov} ©   (19.05.07 15:06)

Ну дык так и пришлось делать. Вот и задал вопрос, чтобы узнать. Может есть "покрасивше" способы.


> [4] Anatoly Podgoretsky ©   (19.05.07 15:09)

Честно говоря, не понял..

To All
Я тут попробовал со стандартными ComboBox и стандартной кнопкой. Все работает нормально. А вот в DevExpress видать "косяк". При том свойстов DroppedDown работает вообще только в одну сторону. Т.е. его устанавливая можно "выпадать" список и обратно. А вот считывать автоматический "выпадший" список оно не дает. Вообщем надо исходники копать походу. Или я все таки гдето ошибаюсь?


 
Kolan ©   (2007-05-19 18:01) [6]

> Честно говоря, не понял&#133

У формы KeyPreview и обрабатывай OnKeyPressed&#133


 
DeadMeat ©   (2007-05-19 20:05) [7]

Да делал я все это. Проблема была (оказывается) в том, что DroppedDown не возвращало результата, в случае автоматического выпадания. Т.е. UP.
Я перепробовал всякие OnKeyPressed.



Страницы: 1 вся ветка

Текущий архив: 2007.06.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
2-1179990590
allucard
2007-05-24 11:09
2007.06.17
Окно нестандартной формы.


2-1180015207
Я Гость
2007-05-24 18:00
2007.06.17
ADO + paradox + cp1251


2-1179912586
DmitrichJ
2007-05-23 13:29
2007.06.17
Размер файла и создание каталога


4-1167871402
Альберт
2007-01-04 03:43
2007.06.17
Перетаскивание формы за контрол на winapi


15-1179844620
Calibr
2007-05-22 18:37
2007.06.17
Соединение с Интернетом