![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Combobox и Escape [D7, XP]
Sw © (2009-10-27 08:59:00)Здравствуйте, помогите, пожалуйста, разобраться.
procedure Tfm.CmbBoxKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Sender is TComboBox then
(Sender as TComboBox).DroppedDown:=True;
end;
procedure Tfm.CmbBoxRecipientCloseUp(Sender: TObject);
begin
if CmbBoxRecipient.ItemIndex=-1 then Exit;
............
иначе заполняется другой комбобох
Если я работаю мышью, открываю комбобокс, выпадает список, ничего из списка не выбрано (перемещаю мышь по списку, но не кликаю)...нажимаю Esc, комбобокс закрывается.
Если с клавиатуры открываю список, то при закрытии происходит обработка CloseUp.
на KeyPress прописываю if key=#27 then CmbBoxRecipient.ItemIndex:=-1; но сначала выполняется CloseUp, а потом KeyPress.
Как сделать, чтобы при нажатии на Esc не выполнялся CloseUp?
TDelphi (2009-10-27 13:00:00) [1]Тьфу... ты ... :) Опечатался
if GetAsyncKeyState (VK_ESCAPE) = 0 then begin
// Выполняется если педаль "ESC" - не нажимали
end;
TDelphi (2009-10-27 12:59:00) [2]Imho, так должно отработать :
procedure Tfm.MyCloseUp (Sender: TObject);
begin
if GetAsyncKeyState (VK_ESCAPE) = 0 then begin
// Выполняется если нажали педаль "ESC "
end;
end;
Можно и не назначать свой обработчик...
Leonid Troyanovsky (2009-10-27 11:47:00) [3]
> TDelphi © (27.10.09 11:16) [3]
> Ага, но как пример сойдёт :)
Не, как пример не годится, бо реакция на Esc никак не меняется.
Хотя, я так и не сумел понять, для чего оное понадобилось.
--
Regards, LVT.
TDelphi (2009-10-27 11:16:00) [4]To : Leonid Troyanovsky ©
>> inherited
>Это, видимо, из другой оперы.
Ага, но как пример сойдёт :)
Leonid Troyanovsky (2009-10-27 11:11:00) [5]
> TDelphi © (27.10.09 10:56) [1]
> inherited
Это, видимо, из другой оперы.
--
Regards, LVT.
TDelphi (2009-10-27 10:56:00) [6]Например так :
...
private
{ Private declarations }
procedure MyCloseUp (Sender: TObject);
...
procedure Tfm.MyCloseUp (Sender: TObject);
begin
if GetAsyncKeyState (VK_ESCAPE) <> 0 then
inherited
else
ShowMessage ('Нажали ESC');
end;
...
procedure Tfm.FormCreate(Sender: TObject);
begin
fm.CmbBox.OnCloseUp := MyCloseUp;
end;