Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.01.2013, 10:05
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию crt32

http://www.delphisources.ru/pages/fa..._unit_use.html

вот тут нашел для отлавливания нажатия клавиш

Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils,crt32,windows;

type
 coord  = record
  x: integer;
  y: integer;
 end;

 var
 m: array[1..22] of array[1..80] of char;


procedure ClearConsoleWindow;
var
  ConsoleHandle:THandle;
  ConsoleInfo: TConsoleScreenBufferInfo;
  Coord:TCoord;
  WrittenChars:DWORD;
begin
  FillChar(ConsoleInfo,SizeOf(TConsoleScreenBufferInfo),0);
  FillChar(Coord,SizeOf(TCoord),0);
  ConsoleHandle:=GetStdHandle(STD_OUTPUT_HANDLE);
  GetConsoleScreenBufferInfo(ConsoleHandle, ConsoleInfo);
  FillConsoleOutputCharacter(ConsoleHandle,' ', ConsoleInfo.dwSize.X * ConsoleInfo.dwSize.Y, Coord, WrittenChars);
  SetConsoleCursorPosition(ConsoleHandle,ConsoleInfo.dwCursorPosition)
end;


procedure Show;
var
i,n: integer;
begin
ClearConsoleWindow;
  for i:=1 to 22 do
  for n:=1 to 80 do  write(m[i,n]);
end;

procedure WriteIn(x,y: byte; ch: char);
begin
OverWriteChrXY(x,y,'5');
GotoXY(1,23);
end;


var
i,n: integer;
 sbi: TConsoleScreenBufferInfo;
sw:string;
key: char;
p:COORD;
begin
  { TODO -oUser -cConsole Main : Insert code here }
for i:=1 to 80 do m[1,i]:='0';
for i:=2 to 21 do
 begin
  m[i,1]:='0';
  m[i,80]:='0';
 end;
p.x:=3;
p.y:=20;
m[p.y,p.x]:='1';
for i:=1 to 80 do m[22,i]:='0';
Show;

While key<>#121 do
 begin
    if KeyPressed then
     begin
      key:=readkey;
      writeln(key);
      if Key=#38 then
       begin
        WriteIn(p.x,p.y,' ');
        m[p.x,p.y]:=' ';
        p.y:=p.y-1;
        m[p.y,p.x]:='1';
        WriteIn(p.x,p.y,'1');
       end;
     end;
 end;
end.
накидал примитивную программку
а оно чего то не работает, ставил точку останова
после key:=readkey; отказывается выполняться модуль crt32

Последний раз редактировалось ALexandr555, 22.01.2013 в 13:06.
Ответить с цитированием
  #2  
Старый 22.01.2013, 12:33
Heneken Heneken вне форума
Новичок
 
Регистрация: 11.09.2011
Сообщения: 73
Версия Delphi: Delphi XE6
Репутация: 10
По умолчанию

Если вам интересно то можно сделать и следующим образом.
Компонент TapplicationEvents в Events OnMessage


Код:
if (Msg.message=WM_KEYDOWN) then showmessage(inttostr(Msg.wParam));
Сообщение вернет код клавиши, что с этим кодом потом делать решать уже вам)
Ответить с цитированием
  #3  
Старый 22.01.2013, 12:41
my33oh my33oh вне форума
Новичок
 
Регистрация: 17.12.2012
Сообщения: 93
Репутация: -579
По умолчанию

на самом деле этот модуль не полный нехватает еще одного и тестового примера
Ответить с цитированием
  #4  
Старый 22.01.2013, 13:13
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

Heneken, ну я так то консольное пишу, в окнном труда не составит отловить
my33oh а подробней?
Ответить с цитированием
  #5  
Старый 22.01.2013, 13:21
my33oh my33oh вне форума
Новичок
 
Регистрация: 17.12.2012
Сообщения: 93
Репутация: -579
По умолчанию

Цитата:
Сообщение от ALexandr555
my33oh а подробней?
ну в моей колекции исходников аналогичных модулей штук 6 есть, а конкретно этот с дополнением и примером, если сам не найдеш, то как земляку могу скинуть завтра\послезавтра когда архив подключу
Ответить с цитированием
  #6  
Старый 22.01.2013, 13:36
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

нашел еще один
http://shine.borec.cz/crt32/index.html
тут функции с клавишами рабочие.
Ответить с цитированием
  #7  
Старый 22.01.2013, 14:43
my33oh my33oh вне форума
Новичок
 
Регистрация: 17.12.2012
Сообщения: 93
Репутация: -579
По умолчанию

ты решил один из своих плееров в консоль запихать чтоли?
я помню у меня в примере были еще рамки всякие,мышь, координатный вывод и прочее типа как в консольных файловых менеджерах

Последний раз редактировалось my33oh, 22.01.2013 в 14:46.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:51.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter