Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Косяк с нажатием клавиш 
V
    Опции темы
Kbl4AH
Дата 18.9.2008, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 4
Всего: 15



Здравствуйте, подскажите, пожалуйста.
У меня на форме есть 2 Edit'а. Я хочу чтобы Enter работал, как Tab.
Поставил KeyPreview формы в True. Почему следующая процедура не работает?
Код

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin

  if Key = 13 then
    Key:= 9;

end;

PM MAIL ICQ   Вверх
morpheyushka
Дата 18.9.2008, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зеленый человек
**


Профиль
Группа: Участник
Сообщений: 563
Регистрация: 26.2.2008
Где: Киев

Репутация: 2
Всего: 8



Код

procedure TForm1.FormCreate(Sender: TObject);
begin
  Form1.KeyPreview := true;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  c: TControl;
begin
  if Key <> 13 then
    Exit;
  repeat
    c := Form1.FindNextControl(Form1.ActiveControl, true, true, true);
    (c as TWinControl).SetFocus;
  until
    c is TEdit;
end;


ЗЫ Только Таб тоже работать будет


--------------------
user posted image
Спасибо делается вот так!!!
PM MAIL WWW   Вверх
Kbl4AH
Дата 18.9.2008, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 4
Всего: 15



Спасибо! И все же, почему процедура не работает?
А чем кейпресс от даун и ап отличается, а то что-то я так и не могу это понять?

Это сообщение отредактировал(а) Kbl4AH - 18.9.2008, 10:51
PM MAIL ICQ   Вверх
morpheyushka
Дата 18.9.2008, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зеленый человек
**


Профиль
Группа: Участник
Сообщений: 563
Регистрация: 26.2.2008
Где: Киев

Репутация: 2
Всего: 8



Раз помогло - то можно галочку теме поставить, а вот по поводу событий - точно не скажу, но мне кажется, что отличие заключается в состояниях кнопки в момент нажатия


--------------------
user posted image
Спасибо делается вот так!!!
PM MAIL WWW   Вверх
ama_kid
Дата 18.9.2008, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 9
Всего: 95



Цитата(Kbl4AH @  18.9.2008,  11:50 Найти цитируемый пост)
почему процедура не работает?
Потому, что ты просто подменяешь полученный символ, но не посылаешь никакого нового сообщения системе...
Код
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
   Inp: TInput;
begin
 if Key = #13 then
  begin
    Inp.Itype := INPUT_KEYBOARD;
    Inp.ki.wVk := 9;
    Inp.ki.dwFlags := 0;
    SendInput(1, Inp, SizeOf(TInput));
  end;
end;




--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Kbl4AH
Дата 18.9.2008, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 4
Всего: 15



Понятно, что отличаются состояниями кнопки.
кейдаун - кнопка нажата,
кейап - отпущена,
а кейпресс тада зачем нужен, у кнопки же нет 3-го состояния???
PM MAIL ICQ   Вверх
BaD_SeCt0R
Дата 18.9.2008, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: нет
Всего: 18



Цитата(Kbl4AH @  18.9.2008,  11:42 Найти цитируемый пост)
а кейпресс тада зачем нужен

это первое и второе подряд


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
Kbl4AH
Дата 18.9.2008, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 4
Всего: 15



Цитата(BaD_SeCt0R @ 18.9.2008,  14:11)
Цитата(Kbl4AH @  18.9.2008,  11:42 Найти цитируемый пост)
а кейпресс тада зачем нужен

это первое и второе подряд

Так он тада получается аналогичен кейапу... ведь кейапа не бывает без предшествующего кейдауна
PM MAIL ICQ   Вверх
BaD_SeCt0R
Дата 18.9.2008, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: нет
Всего: 18



Цитата(Kbl4AH @  18.9.2008,  15:46 Найти цитируемый пост)
Так он тада получается аналогичен кейапу... ведь кейапа не бывает без предшествующего кейдауна

 smile Как сказать... В большинстве случаев так, руководствуясь здравой логикой. Но вот, например, нажал ты в своем окне кнопу, а тут активизировалось чужое. И keyup произошел в нем smile


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0474 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.