Форум: "Прочее";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];
Вниз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]> Честно говоря, не понял…
У формы KeyPreview и обрабатывай OnKeyPressed…
← →
DeadMeat © (2007-05-19 20:05) [7]Да делал я все это. Проблема была (оказывается) в том, что DroppedDown не возвращало результата, в случае автоматического выпадания. Т.е. UP.
Я перепробовал всякие OnKeyPressed.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c