Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Получение кода нажатых клавиш формы запущенной как Form.Show [D6, XP]


sas9568635 ©   (2012-07-11 11:00:00) 

Как опрашивать и получать код нажатых клавиш в форме class(TForm)?... (запущенной как  Form.Show; ) Итересуют ВСЕ клавиши в.ч. и стрелки Shit, Alt, ctrl и т.д.


sniknik   (2012-07-11 21:31:00) [1]

по умному не получится, при отсутствии основ. только "тупо".


sas9568635   (2012-07-11 16:59:00) [2]


> а теперь смотри как оно проц грузит :)

Я ее по умному прикручу будет опрашивать когда надо! и когда готова опросить клаву! :-)


AV   (2012-07-11 13:58:00) [3]


> sas9568635 ©   (11.07.12 13:56) [15]

а теперь смотри как оно проц грузит :)


sas9568635   (2012-07-11 13:56:00) [4]

> Application.ProcessMessages;
ВО! ВОТ ЭТО ПО ДЕЛУ ! СПАСИБО! Уже попробовал!


AV   (2012-07-11 13:54:00) [5]

еще есть Application.ProcessMessages;


sas9568635   (2012-07-11 13:50:00) [6]


> :-) :-):-) НУ ВОТ ОНО ! ВОТ ! :-) То что я хотел спросить
> ! Спасибо! :-) :-):-)Остальное я знал...

Неа... Не совсем то...
Почему затряет программ при вот таком вот...

Repeat
 l1:=l1+1;
  Form1.Caption := IntToStr(L1);
Application.HandleMessage;
until l1=200000000000;

Я ожидал что она не будет затрявать на Application.HandleMessage; и ждать результата, а она застряет причем как-то странно...


sas9568635   (2012-07-11 13:35:00) [7]


> Application.HandleMessage;


:-) :-):-) НУ ВОТ ОНО ! ВОТ ! :-) То что я хотел спросить ! Спасибо! :-) :-):-)
Остальное я знал...


> А в чем смысл такого действа? Форму так показывать, а не
> как принято

Долго объяснять... если хочешь загляни сюда http://sas.forumbb.ru/viewtopic.php?id=290


AV   (2012-07-11 13:21:00) [8]

begin
//  Application.Initialize;
//  Application.CreateForm(TForm1, Form1);
//  Application.Run;
Repeat
 Application.HandleMessage;
until False;
end.
----
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 Caption := IntToStr(Key)    ;
end;

INITIALIZATION
Form1:=TForm1.Create(Application);
Form1.Show;
end.

--
ну, работает..
в чем вопрос то

ps
А в чем смысл такого действа? Форму так показывать, а не как принято


Anatoly Podgoretsky   (2012-07-11 13:12:00) [9]


> Как мне опрашивать нажатые клавиши и получать их код?

В обработчике FormKeyDown параметр Key


sas9568635   (2012-07-11 13:04:00) [10]

Удалено модератором


sas9568635   (2012-07-11 13:03:00) [11]

Эх... Блин... :-) Да была бы вторая форма да я бы не парился....
Существует основная программа
в которой постоянно работает код
program Project1;
uses
 Forms,
 Unit1 in 'Unit1.pas' {Form1},
{$R *.res}
begin
Repeat
// вот здесь постоянно работает код
// который передает в форму для вывода результатов
until
end.


Существует модуль формы к ней который создается и запускается см. INITIALIZATION


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Label1: TLabel;
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 I:int64;

implementation

{$R *.dfm}

INITIALIZATION
Form1:=TForm1.Create(Application);
Form1.Show;
end.

Как мне опрашивать нажатые клавиши и получать их код?


AV   (2012-07-11 12:46:00) [12]

протелепатирую..

procedure TForm1.btn2Click(Sender: TObject);
begin
 KeyPreview := True;
 form2.KeyPreview := True;
 form2.show;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 form2.FormKeyDown(Self, Key, Shift);
end;

-------

procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 Caption := IntToStr(Key);
end;


Anatoly Podgoretsky   (2012-07-11 12:23:00) [13]

> sas9568635  (11.07.2012 12:04:05)  [5]

Опрашивать ничего не надо, Дельфи это событийная вещь.


sas9568635   (2012-07-11 12:04:00) [14]

Блин... :-)  Форма запущенная как Form.Show; !!! Висячая! Основная программа работает! Вот в чем загвоздка. Как опросить клавиатуру из основной (если уже не из формы) программы?.. или как временами передавать фокус форме чтобы срабатывала процедура опроса клавы?
Если реализовывать надо в основной программе то желательно без финкций API, потому что хрен я с этими API разберусь...
КАК ЭТО СДЕЛАТЬ?...


Anatoly Podgoretsky   (2012-07-11 12:02:00) [15]


> sas9568635 ©   (11.07.12 11:44) [1]

Это уже совсем другой вопрос и в итоге ты теперь всех поставил в тупик, теперь непонятно что тебе надо, но точно, что вызывать FormKeyDown не надо.


Anatoly Podgoretsky   (2012-07-11 12:00:00) [16]

WM_GETDLGCODE


brother   (2012-07-11 11:46:00) [17]

она сама вызывается при нажатии клавиши...
в обработчике напиши например такое:
Caption:= IntToStr(Key);
и смотри результаты...


sas9568635   (2012-07-11 11:44:00) [18]

Я так понял из основной программы нужно передавать фокус форме(или той процедуре) ...
А как это сделать?...
Как вызвать procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
из основной программы Что подтсавлять в параметры? или как вообще дейтствовать?..


Наверх

Титульная страница Поиск, карта сайта Написать письмо