Главная страница
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.015 c
15-1255627268
@!!ex
2009-10-15 21:21
2009.12.13
Бесплатный редактор Flash


1-1228552121
Andrew_New
2008-12-06 11:28
2009.12.13
TDBLookupCombobixEh как сделать толще полосу прокрутки в выпадающ


2-1256364118
Pascal96
2009-10-24 10:01
2009.12.13
Подскажите, пожалуйста )))


3-1231348460
TCrash
2009-01-07 20:14
2009.12.13
Получение полного имени поля


2-1256655721
Nutz
2009-10-27 18:02
2009.12.13
Сохранение в Unicode