Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: CL | DM;

Вниз

Чё за обработчик OnChar   Найти похожие ветки 

 
Ciber SLasH ©   (2003-11-13 08:02) [0]

Мне нужно было, чтоб моя прога закрывалась по <Esc>, я смотрел список обработчиков в KOL-форме, так и не нашёл обработчика OnKeypress. Нашёл OnChar, а что он делает так и не понял.
Народ помогите плиз, сделать так, чтобы прога закрывалась по <Esc>.


 
savva ©   (2003-11-13 10:52) [1]

а на OnKeyUp почему не завязаться? в твоем случае key=27 (вроде:))


 
Ciber SLasH ©   (2003-11-13 11:59) [2]

Я пробовал на OnKeyDown (это типа на нажатие пимпы), но ничего не сработало :(
И всё же, чё за обработчик такой: OnChar ?


 
mike.dld ©   (2003-11-13 12:18) [3]

OnChar - это и есть OnKeyPress, для тебя Key = #27


 
Ciber SLasH ©   (2003-11-13 14:20) [4]

//OnChar - это и есть OnKeyPress, для тебя Key = #27
Так почему же тогда он не работает ?
Я вписывал туда код: if Char = #27 then
                      Close;
ставлю бряк на строку if ... then дебаггер даже не останавливается -> форма не закрывается !


 
Gandalf ©   (2003-11-13 14:39) [5]

Во первых надо писать


procedure TForm1.KOLForm1Char(Sender: PControl; var Key: Char;
 Shift: Cardinal);
begin
  if Key = #27 then
   Form.Close;
end;


Во вторых в KOL нет KeyPreview - форма должна быть активной чтобы к ней клавиша пришла.


 
Ciber SLasH ©   (2003-11-13 14:58) [6]

Блин а чё у меня ничего не получается !
Тока что создал новую форму - OnChar работает.
А в проге которую создал чуть позже - не работат !
Может поможите, я исходники вышлю.


 
SPeller ©   (2003-11-13 16:35) [7]


> Тока что создал новую форму - OnChar работает.
> А в проге которую создал чуть позже - не работат !

Потому что фокус в первом случае был у формы, а во втором у какого-то контрола. Это недочёт КОЛа. Как вариант - можно использовать скрытые менюшки. Только это уже извращением будет.


 
Ciber SLasH ©   (2003-11-13 17:00) [8]

А как же тогда сделать ?


 
Vladimir Kladov   (2003-11-13 19:58) [9]

Кроме скрытых менюшек, есть еще Applet.OnMessage. И еще вариант: одинаковый обработчик OnChar/OnKeyDown/OnKeyUp - на выбор - у всех контролов на форме.


 
Gandalf ©   (2003-11-14 17:08) [10]

Первый способ мне явно импонирует больше. Если обработку навесить на KOLForm, то следующий KOL эмитирует VCL KeyPreview:


function TForm1.KOLApplet1Message(var Msg: tagMSG;
 var Rslt: Integer): Boolean;
var C : Char;
begin
 Result := False;
 case Msg.message of
   WM_KEYDOWN, WM_SYSKEYDOWN:
     if assigned( Form.OnKeyDown ) then
        Form.OnKeyDown( Form, Msg.wParam, GetShiftState );
   WM_KEYUP, WM_SYSKEYUP:
     if assigned( Form.OnKeyUp ) then
        Form.OnKeyUp( Form, Msg.wParam, GetShiftState );
   WM_CHAR, WM_SYSCHAR:
     if assigned( Form.OnChar ) then
     begin
        C := Char( Msg.wParam );
        Form.OnChar( Form, C, GetShiftState );
        Msg.wParam := Integer( C );
     end;
 end;
end;



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

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

Наверх




Память: 0.49 MB
Время: 0.031 c
1-1082482320
Polkan
2004-04-20 21:32
2004.04.11
StringGrid и SaveToFile


4-1079638059
MyNick
2004-03-18 22:27
2004.04.11
Запрет ALT-CTRL_DEL


14-1082202368
garry79
2004-04-17 15:46
2004.04.11
Народ, где можно поискать avi шки или gif ы для заставок


6-1074918951
hi-end
2004-01-24 07:35
2004.04.11
публикация данных из базы в инете


4-1079462693
Александр Григоренко
2004-03-16 21:44
2004.04.11
Выравнивание в ComboBox при помощи API