Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2009, 17:02   #1
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию Нажатие клавиш на клавиатуре вверх, вниз

Млин народ почему эти 2 клавиши (вверх, вниз) не работают ???
Код:
procedure TF_Uchet.DBG_UKeyPress(Sender: TObject; var Key: Char);
begin

 if ((Key=#72) or (Key=#80)) and (DM.ADOQ_Udis_kon.Value='Диспансерный')   then
begin
      Groupbox5.Visible:=true;
      F_Uchet.DBLCB1.Visible:=true;
end;
  if ((Key=#72) or (Key=#80))and (DM.ADOQ_Udis_kon.Value='Консультативный')   then
    begin
    F_Uchet.DBLCB1.Visible:=false;
    Groupbox5.Visible:=false;
    end;
end;
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Старый 10.07.2009, 17:13   #2
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Используй событие KeyDown (нажатие клавиши)

Код:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key=38 then
ShowMessage('UP');
if Key=40 then
ShowMessage('DOWN');
end;
profi вне форума Ответить с цитированием
Старый 10.07.2009, 17:15   #3
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Используйте обработчик onKeyDown, а не OnKeyPress:
Код:
procedure TF_Uchet.DBG_UKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin

 if ((Key=VK_DOWN) or (Key=VK_UP)) and (DM.ADOQ_Udis_kon.Value='Диспансерный')   then
begin
      Groupbox5.Visible:=true;
      F_Uchet.DBLCB1.Visible:=true;
end;
  if ((Key=VK_DOWN) or (Key=VK_UP))and (DM.ADOQ_Udis_kon.Value='Консультативный')   then
    begin
    F_Uchet.DBLCB1.Visible:=false;
    Groupbox5.Visible:=false;
    end;
end;
//Немного не успел
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 10.07.2009, 17:16   #4
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Цитата:
Сообщение от Droid Посмотреть сообщение
Млин народ почему эти 2 клавиши (вверх, вниз) не работают ???
Код:
procedure TF_Uchet.DBG_UKeyPress(Sender: TObject; var Key: Char);
begin

 if (Key=#72) or (Key=#80)) and (DM.ADOQ_Udis_kon.Value='Диспансерный')   then
begin
      Groupbox5.Visible:=true;
      F_Uchet.DBLCB1.Visible:=true;
end;
  if (Key=#72) or (Key=#80))and (DM.ADOQ_Udis_kon.Value='Консультативный')   then
    begin
    F_Uchet.DBLCB1.Visible:=false;
    Groupbox5.Visible:=false;
    end;
end;
Так не пишется Key=#72 !

Key=38 -up
Key=40 -down


Код:
procedure TF_Uchet.DBG_UKeyPress(Sender: TObject; var Key: Char);
begin
 if (Key=38)  and (DM.ADOQ_Udis_kon.Value='Диспансерный')   then
begin
      Groupbox5.Visible:=true;
      F_Uchet.DBLCB1.Visible:=true;
end;
  if ((Key=40)and (DM.ADOQ_Udis_kon.Value='Консультативный')   then
    begin
    F_Uchet.DBLCB1.Visible:=false;
    Groupbox5.Visible:=false;
    end;
end;

Последний раз редактировалось uberchel; 10.07.2009 в 17:19.
uberchel вне форума Ответить с цитированием
Старый 10.07.2009, 17:16   #5
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

ОК спасибо )
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Старый 10.07.2009, 17:22   #6
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Цитата:
Так не пишется Key=#72 !
Мих, этот код, обработчик onKeyPress, тут Key имеет тип Char, так что так не напишешь:
Цитата:
(Key=40)
Мы и сказали ТС использовать onKeyDown
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 10.07.2009, 17:35   #7
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

Цитата:
Сообщение от Neeter Посмотреть сообщение
Мих, этот код, обработчик onKeyPress, тут Key имеет тип Char, так что так не напишешь:


Мы и сказали ТС использовать onKeyDown
Почему они у меня не коректно работают, при нажатии на стрелки клавы делается все наоборот ( При нажатии на кнопку мыши надо 2 раза нажать чтоб все нормально работало, может какую нибудь процедуру или функцию надо ? ? ?
Код:
procedure TF_Uchet.DBG_UCellClick(Column: TColumn);
begin

if DM.ADOQ_Udis_kon.Value='Диспансерный' then
begin
      Groupbox5.Visible:=true;
      F_Uchet.DBLCB1.Visible:=true;
end
  else if DM.ADOQ_Udis_kon.Value='Консультативный' then
    begin
    F_Uchet.DBLCB1.Visible:=false;
    Groupbox5.Visible:=false;
    end;
end;
и
Код:
procedure TF_Uchet.DBG_UKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if ((Key=vk_down) or (Key=vk_up)) and (DM.ADOQ_Udis_kon.Value='Консультативный')  then
    begin
    F_Uchet.DBLCB1.Visible:=false;
    Groupbox5.Visible:=false;
    end
 else
  if ((Key=vk_down) or (Key=vk_up)) and (DM.ADOQ_Udis_kon.Value='Диспансерный')   then
begin
      Groupbox5.Visible:=true;
      F_Uchet.DBLCB1.Visible:=true;
end;
end;
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Старый 10.07.2009, 17:45   #8
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Цитата:
Почему они у меня не коректно работают, при нажатии на стрелки клавы делается все наоборот
делай на KeyUp

Цитата:
При нажатии на кнопку мыши надо 2 раза нажать чтоб все нормально работало, может какую нибудь процедуру или функцию надо ? ? ?
должно работать с первого раза сам только что для себя проверил
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Старый 10.07.2009, 17:52   #9
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

Цитата:
Сообщение от quit Посмотреть сообщение
делай на KeyUp



должно работать с первого раза сам только что для себя проверил
Код:
procedure TF_Uchet.DBG_UCellClick(Column: TColumn);
begin

if DM.ADOQ_Udis_kon.Value='Диспансерный' then
begin
      Groupbox5.Visible:=true;
      F_Uchet.DBLCB1.Visible:=true;
end
  else if DM.ADOQ_Udis_kon.Value='Консультативный' then
    begin
    F_Uchet.DBLCB1.Visible:=false;
    Groupbox5.Visible:=false;
    end;
end;
А эту процедуру через что ?
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Старый 10.07.2009, 17:59   #10
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Цитата:
А эту процедуру через что ?
Т.е.? А что тебе сейчас нужно сделать?
profi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
фокус и нажатие кнопок на клавиатуре Juffin Общие вопросы Delphi 6 22.05.2009 10:52
Нажатие кнопок на клавиатуре Orodret Общие вопросы C/C++ 6 16.04.2009 09:06
Имитатор нажатие клавиши на клавиатуре SNUPY Общие вопросы Delphi 3 10.11.2008 21:39
Перемещать строки вверх-вниз, с помощью стрелок. Rio309 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 27.10.2008 21:47
как с помощью TScrollBar перемещать содержимое TMemo вверх или вниз Sanprof Общие вопросы Delphi 3 04.03.2008 00:39