![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
не работает CTRL-C !!!! [D6, WinXP]
Yozch1 © (2008-12-02 15:36:00)Бред какой-то. при нажатии CTRL-C в onKeyDown упорно передается ssCtrl и key=17, но никак не ord(С) (67)
проходит только вариант при нажатии еще и SHIFT тогда передается ssCtrl, ssShift и С, но это же неправильно?
Где копать, помогите, не пойму что за беда!
KilkennyCat (2008-12-10 11:52:00) [1]
> Dimka Maslov © (10.12.08 10:36) [16]
> OnKeyPress, а не OnKeyDown. И сообщение на него приходит WM_CHAR, a не WM_KEYDOWN.
ну ты загнул....
Во-первых, в [11] полностью сказано КАК.
Во-вторых, утверждение [13] неверно, потому что: ord('C') необязательно даст то, что надо; учитывая [8] возможна ситуация неправильной последовательности нажимания.
В-третьих, пофиг как и где обрабатывать. Мы все умрем.
Dimka Maslov (2008-12-10 10:36:00) [2]Господа!
Нажатие ctrl+c обрабатывается событием OnKey Press, а не OnKeyDown. И сообщение на него приходит WM_CHAR, a не WM_KEYDOWN.
Следовательно, код надо писать так
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = ^C then begin
ShowMessage(' Превед робяты!');
(FEdit as TTntcustomEdit).CopyToClipboard;
key := #0;
end
end;
Cobalt (2008-12-09 10:17:00) [3]Зачем заменять WindowProc, можно WinSight'ом посмотреть.
Palladin (2008-12-03 08:37:00) [4]попробуй у формы (или где ты там ловишь) заменить WindowProc и препарировать - что же приходит прим WM_KEYUP или WM_KEYDOWN (или где ты там ловишь)
Yozch1 (2008-12-03 08:11:00) [5]Если бы так просто.
Весь гимор как раз и в том и состоит, что такое не работает
if (key=Ord('C'))
then
if (ssCtrl in Shift) then
begin
showmessage('sdfsdfsdfd');
(FEdit as TTntcustomEdit).CopyToClipboard;
key := 0;
end;
и я не могу понять причину.
KilkennyCat (2008-12-02 19:40:00) [6]
> Leonid Troyanovsky © (02.12.08 18:48) [11]
Cогласен. Но потом он захочет еще более сложную комбинацию ловить и снова будут мучения.
Leonid Troyanovsky (2008-12-02 18:48:00) [7]
> KilkennyCat © (02.12.08 18:09) [10]
> GetKeyboardState избавляет от мучений раз и навсихда
А зачем ему мучения?
Проверил ssCtrl и др. при поcтуплении Ord('C') - и свободен.
--
Regards, LVT.
KilkennyCat (2008-12-02 18:09:00) [8]GetKeyboardState избавляет от мучений раз и навсихда
stas (2008-12-02 18:06:00) [9]Yozch1 (02.12.08 15:36)
if (key<>17) then...
KilkennyCat (2008-12-02 18:05:00) [10]Key равен последней нажатой клавиши.
Leonid Troyanovsky (2008-12-02 18:02:00) [11]
> Yozch1 (02.12.08 17:08) [6]
> Key стоит, а не код нажатой одновременно с ctrl кнопки.
Это код нажатой клавиши vk_control.
За ним, очевидно, последуют коды клавиш, нажатых после того.
--
Regards, LVT.
Yozch1 (2008-12-02 17:08:00) [12]
> ладно, подскажу: посмотри код Ctrl
Я знаю что это за код. Мне непонятно почему именно он в Key стоит, а не код нажатой одновременно с ctrl кнопки.
Германн (2008-12-02 16:33:00) [13]
> тогда она и "вставить" должна сразу посылать
>
Вот она и вставляет и посылает
clickmaker (2008-12-02 16:04:00) [14]> Может, клавиатура продвинутая, и сразу посылает команду
> "копировать"? :)
китайская?
тогда она и "вставить" должна сразу посылать
Leonid Troyanovsky (2008-12-02 15:50:00) [15]
> Yozch1 (02.12.08 15:36)
> но никак не ord(С) (67)
Докажи.
--
Regards, LVT.
KilkennyCat (2008-12-02 15:41:00) [16]ладно, подскажу: посмотри код Ctrl
KilkennyCat (2008-12-02 15:38:00) [17]Может, клавиатура продвинутая, и сразу посылает команду "копировать"? :)