Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.13;
Скачать: 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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.013 c
15-1254430882
Kerk
2009-10-02 01:01
2009.12.13
Олимпийский стадион в Сочи 2014


2-1256543498
mw_Kronos
2009-10-26 10:51
2009.12.13
Глюкии ввода-вывода ReWrite


2-1256393458
Lamer6666
2009-10-24 18:10
2009.12.13
Работа с COM портом.


10-1121666059
YuriS
2005-07-18 09:54
2009.12.13
Borland Socket Server


2-1256204193
Scot Storch
2009-10-22 13:36
2009.12.13
Как передать в запрос многострочный текст