Вниз
Скачать: CL | DM;

Combobox и Escape   Найти похожие ветки 

← →
Sw   (2009-10-27 08:59) [0]

Здравствуйте, помогите, пожалуйста, разобраться.

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 10:56) [1]

Например так :

...
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;


← →
Leonid Troyanovsky ©   (2009-10-27 11:11) [2]


> TDelphi ©   (27.10.09 10:56) [1]

>    inherited

Это, видимо, из другой оперы.

--
Regards, LVT.


← →
TDelphi ©   (2009-10-27 11:16) [3]

To :  Leonid Troyanovsky ©

>>    inherited

>Это, видимо, из другой оперы.

Ага, но как пример сойдёт :)


← →
Leonid Troyanovsky ©   (2009-10-27 11:47) [4]


> TDelphi ©   (27.10.09 11:16) [3]

> Ага, но как пример сойдёт :)

Не, как пример не годится, бо реакция на Esc никак не меняется.

Хотя, я так и не сумел понять, для чего оное понадобилось.

--
Regards, LVT.


← →
TDelphi ©   (2009-10-27 12:59) [5]

Imho, так должно отработать :

procedure Tfm.MyCloseUp (Sender: TObject);
begin
 if GetAsyncKeyState (VK_ESCAPE) = 0 then begin
    // Выполняется если нажали педаль "ESC "
 end;
end;

Можно и не назначать свой обработчик...


← →
TDelphi ©   (2009-10-27 13:00) [6]

Тьфу... ты ... :) Опечатался

if GetAsyncKeyState (VK_ESCAPE) = 0 then begin
   // Выполняется если педаль "ESC" - не нажимали
end;



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.013 c
15-1255747691
Ruzzz
2009-10-17 06:48
2009.12.13
Красивое поведение при сворачивании в трей


2-1256319619
Заглянувший
2009-10-23 21:40
2009.12.13
Неповтояющийся RANDOM


15-1255523606
s_t_d
2009-10-14 16:33
2009.12.13
Книга, где есть основы работы с IDE MS Visual Studio 2008


2-1256119948
vlad2
2009-10-21 14:12
2009.12.13
<B>DLL</B> не грузится, если в ней <B>TChart</B>


1-1228251529
Dimon Dimonich
2008-12-02 23:58
2009.12.13
Построение пространства из точек.




   Наверх