Форум: "KOL";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизЧё за обработчик OnChar Найти похожие ветки
← →
Ciber SLasH © (2003-11-13 08:02) [0]Мне нужно было, чтоб моя прога закрывалась по <Esc>, я смотрел список обработчиков в KOL-форме, так и не нашёл обработчика OnKeypress. Нашёл OnChar, а что он делает так и не понял.
Народ помогите плиз, сделать так, чтобы прога закрывалась по <Esc>.
← →
Ciber SLasH © (2003-11-13 08:02) [0]Мне нужно было, чтоб моя прога закрывалась по <Esc>, я смотрел список обработчиков в KOL-форме, так и не нашёл обработчика OnKeypress. Нашёл OnChar, а что он делает так и не понял.
Народ помогите плиз, сделать так, чтобы прога закрывалась по <Esc>.
← →
savva © (2003-11-13 10:52) [1]а на OnKeyUp почему не завязаться? в твоем случае key=27 (вроде:))
← →
savva © (2003-11-13 10:52) [1]а на OnKeyUp почему не завязаться? в твоем случае key=27 (вроде:))
← →
Ciber SLasH © (2003-11-13 11:59) [2]Я пробовал на OnKeyDown (это типа на нажатие пимпы), но ничего не сработало :(
И всё же, чё за обработчик такой: OnChar ?
← →
Ciber SLasH © (2003-11-13 11:59) [2]Я пробовал на OnKeyDown (это типа на нажатие пимпы), но ничего не сработало :(
И всё же, чё за обработчик такой: OnChar ?
← →
mike.dld © (2003-11-13 12:18) [3]OnChar - это и есть OnKeyPress, для тебя Key = #27
← →
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 дебаггер даже не останавливается -> форма не закрывается !
← →
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 - форма должна быть активной чтобы к ней клавиша пришла.
← →
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 работает.
А в проге которую создал чуть позже - не работат !
Может поможите, я исходники вышлю.
← →
Ciber SLasH © (2003-11-13 14:58) [6]Блин а чё у меня ничего не получается !
Тока что создал новую форму - OnChar работает.
А в проге которую создал чуть позже - не работат !
Может поможите, я исходники вышлю.
← →
SPeller © (2003-11-13 16:35) [7]
> Тока что создал новую форму - OnChar работает.
> А в проге которую создал чуть позже - не работат !
Потому что фокус в первом случае был у формы, а во втором у какого-то контрола. Это недочёт КОЛа. Как вариант - можно использовать скрытые менюшки. Только это уже извращением будет.
← →
SPeller © (2003-11-13 16:35) [7]
> Тока что создал новую форму - OnChar работает.
> А в проге которую создал чуть позже - не работат !
Потому что фокус в первом случае был у формы, а во втором у какого-то контрола. Это недочёт КОЛа. Как вариант - можно использовать скрытые менюшки. Только это уже извращением будет.
← →
Ciber SLasH © (2003-11-13 17:00) [8]А как же тогда сделать ?
← →
Ciber SLasH © (2003-11-13 17:00) [8]А как же тогда сделать ?
← →
Vladimir Kladov (2003-11-13 19:58) [9]Кроме скрытых менюшек, есть еще Applet.OnMessage. И еще вариант: одинаковый обработчик OnChar/OnKeyDown/OnKeyUp - на выбор - у всех контролов на форме.
← →
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;
← →
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 вся ветка
Форум: "KOL";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.05 c