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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать жадать нажатия клавиши, В Паскале Readkey, в модуле CRT, а тут? 
:(
    Опции темы
Zero
Дата 1.2.2005, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

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



САБЖ.
PM MAIL ICQ   Вверх
Alex
Дата 1.2.2005, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 80
Всего: 162





--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Zero
Дата 1.2.2005, 02:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

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



Alex а по проще нету? smile В часности, я не понял, что за "WindowClassName", и в целом я ещё не проверял код (точнее не получилось). Но мне нужно, чтобы у меня при нажатии на кнопку появлялась вторая форма, а в середине код должен прирватся и ждать нажатия определённой клавиши для продолжения.
PM MAIL ICQ   Вверх
Fedor
Дата 1.2.2005, 02:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


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

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



Цитата(Zero @ 1.2.2005, 01:26)
в середине код должен прирватся

в середине чего? той процедуры, которая запускает вторую форму?
Цитата(Zero @ 1.2.2005, 01:26)
ждать нажатия определённой клавиши для продолжения.

тоже не очень понятно...

З.Ы. Может не в тему, но если тебе нужно, чтоб код приостанавливался в момент открытия второй формы и возобновлялся в момент ее закрытия, то вместо Show используй ShowModal


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
ДЫМ
Дата 1.2.2005, 03:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Привет, Zero. Отдельное спасибо за "плюсик". smile

Решение на самом деле простое (опять же если я тебя правильно понял).
Воспользуйся API-функцией GetKeyState. Как только она возвратит значение, меньшее нуля,- значит клавиша нажата.


Например, этот код делает следующее: при запуске приложения главное окно не появится пока не будет нажата комбинация Alt-F5.
Код

procedure TForm1.FormCreate(Sender: TObject);
begin

// если нужно отследить одну клавишу F5
// While GetKeyState(VK_F5)>=0 do;

While true do
begin
  if (GetKeyState(VK_F5)<0) and (GetKeyState(VK_MENU)<0) then Break;
 end;
end;





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


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Ой, как жестоко. Зачем же так систему грузить?
Вот вариант на событии Application'a:
Код

procedure TForm1.ApplicationEvents1ShortCut(var Msg: TWMKey;  var Handled: Boolean);
begin
 if Msg.CharCode=VK_F1 then begin
   MessageBox(0,'Нажал!','Кнопошка',MB_OK);
   Handled:=true;
 end else Handled:=false;
end;


А вообще, если смотреть второе пояснение, то требуется всего лишь Form2.ShowModal.
А потом вторую форму просто закрываем по нажатию определенной кнопы и продолжаем первую форму.
Или не так?
PM MAIL   Вверх
Zero
Дата 1.2.2005, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

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



Цитата(Fedor @ 1.2.2005, 02:41)
в середине чего? той процедуры, которая запускает вторую форму?
Точнее после появления формы.
Цитата(Fedor @ 1.2.2005, 02:41)
Цитата (Zero @ 1.2.2005, 01:26)
ждать нажатия определённой клавиши для продолжения.
тоже не очень понятно...

Если это был был бы Турбо Паскаль, то было бы типа того:
Код

var
 c:char;
...
begin
c:=readkey;
if c='<нужный символ>' then <выполнить нужное действие>
...

Цитата
Воспользуйся API-функцией GetKeyState.

ДЫМ у меня сразу всё зависает при вызове этой процедуры. smile
Цитата(Snowy @ 1.2.2005, 10:14)
Вот вариант на событии Application'a:

Snowy я непонял как же её потом вызывать, точнее судя по заголовку
Код

ApplicationEvents1ShortCut(<тут должен быть символ(, но только какой)>,<здесь False/true (но ни то ни др. не работает)>);

Вобщем чтобы всем было понятно что мне нужно, напишу отрывок моей проги:
1. Создать новую форму, и бросить на неё Label
2. Процедура вывода информации
Код

procedure Output(s:string);
begin
 with unit2.Form2 do
   begin
     Visible:=false;
     Visible:=true;
     Label1.Caption:=s;
   end;
end;

3. Процедура которая всем управляет (точнее её кусок):
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
 repeat
   case i of
     0: Output('Сообщение1');
     1: Output('Сообщение2');
     {.....................}
   end;
   i:=i+1;
   if i=2 then i:=1;

{Тут нужно вставить функцию которая будет ждать нажатия клавиши для дальнейших действвий, а то сообщения идут безастоновочно}

 until false;
end;

PS: Вобщем необращайте внимание на мой код и всё остальное, мне нужна лишь функция (типа как в Паскале Readkey), всё остальное пишу лишь для того чтобы всем было всё понятно. Заголовок темы ─ ЕСТЬ ВОПРОС. smile


Это сообщение отредактировал(а) Zero - 1.2.2005, 15:22
PM MAIL ICQ   Вверх
Snowy
Дата 1.2.2005, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Оконное приложение - система событийная. Там нет понятия "ждать".
Можно полностью усыпить приложение, но тогда не будет никакой реакции от него.
Так что единственный выход - ждать нужного события.
Цитата

Snowy я непонял как же её потом вызывать, точнее судя по заголовку

ее не нужно вызывать. Кидаешь на форму TApplicationEvent и создаешь событие OnShortCut.
А в ней уже обрабатываешь кнопку когда как тебе нужно.
Единственный минус, что работает всегда, независимо от того, какая форма сейчас на экране.
PM MAIL   Вверх
Alex
Дата 1.2.2005, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 80
Всего: 162





--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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