Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.12.13;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.005 c
2-1256126911
Nucer
2009-10-21 16:08
2009.12.13
Из WideChar в Char


11-1169181906
AlexM
2007-01-19 07:45
2009.12.13
VCL и KOL


15-1255496803
И. Павел
2009-10-14 09:06
2009.12.13
Компоненты для смены скинов.


2-1256321201
Zzzz
2009-10-23 22:06
2009.12.13
открытие содерж. blob-поля во врем. файле


15-1255166733
TStas
2009-10-10 13:25
2009.12.13
Как работают подпрограммы?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский