![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Any key в Delphi... [D6, Win2k]
Voldemar © (2002-06-27 21:20:00)Доброе время суток!
Подскажите, как в консольной прогесделать такую штуку...
В турбе я спокойно писАл
while not KeyPressed do
delay(0.01)
a в Делфах ни того, ни другого нет... Как?
VDen (2002-06-29 11:08:00) [1]Способ есть - вот вам функция KeyPressed на API.
function KeyPressed: Boolean;
Var irInBuf : TInputRecord;
W : DWord;
begin
KeyPressed := False;
if PeekConsoleInput(RHandle,irInBuf,1,W) then
if ( (irInBuf.EventType = Key_Event) and
(irInBuf.Event.KeyEvent.bKeyDown = true))
then
KeyPressed := true;
end;
Anatoly Podgoretsky (2002-06-29 10:59:00) [2]В Windows очень большое количество функция, для поддержки консольных приложений, больше 40 и было бы смешно думать что там нет ничего тебе нужного, тебе подойдет эта GetNumberOfConsoleInputEvents, учти ято консоль в Windows это не дос, к события ввода относятся не только ввод с клавиатуры, но и мышь и изменение размеров окна.
Voldemar (2002-06-29 01:24:00) [3]>REaliSt © (28.06.02 16:46)
В турбе крайне криво реализован TStringList, да и не уверен я, что вообще реализован. У меня была мысль сделать все там, но я отказался от нее - APIшные функции нужны...
Неужели же нет способа?
REaliSt (2002-06-28 16:47:00) [4]Или лучше в нормальной форме с использованием ApplicationEvents
REaliSt (2002-06-28 16:46:00) [5]В консоли такая фишка не прокатывает.
Лучше в турбе и пиши.
nimble (2002-06-28 03:06:00) [6]Sory, про консоль не заметил!
nimble (2002-06-28 03:04:00) [7]Помещаешь на форму компонент TApplicationEvents. У него по событию OnMessageпишешь:
if Msg.message=wm_keydown then ShowMessage("Код нажатой ... - "+IntToStr(Msg.wParam));