Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

не работает 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]

Может, клавиатура продвинутая, и сразу посылает команду "копировать"? :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо