Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

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

 
sas9568635 ©   (2012-07-11 11:00) [0]

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


 
sas9568635 ©   (2012-07-11 11:44) [1]

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


 
brother ©   (2012-07-11 11:46) [2]

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


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

WM_GETDLGCODE


 
Anatoly Podgoretsky ©   (2012-07-11 12:02) [4]


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

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


 
sas9568635 ©   (2012-07-11 12:04) [5]

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


 
Anatoly Podgoretsky ©   (2012-07-11 12:23) [6]

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

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


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

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

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;


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

Эх... Блин... :-) Да была бы вторая форма да я бы не парился....
Существует основная программа
в которой постоянно работает код
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.

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


 
sas9568635 ©   (2012-07-11 13:04) [9]

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


 
Anatoly Podgoretsky ©   (2012-07-11 13:12) [10]


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

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


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

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
А в чем смысл такого действа? Форму так показывать, а не как принято


 
sas9568635 ©   (2012-07-11 13:35) [12]


> Application.HandleMessage;


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


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

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


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


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

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

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

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


 
AV ©   (2012-07-11 13:54) [14]

еще есть Application.ProcessMessages;


 
sas9568635 ©   (2012-07-11 13:56) [15]

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


 
AV ©   (2012-07-11 13:58) [16]


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

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


 
sas9568635 ©   (2012-07-11 16:59) [17]


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

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


 
sniknik ©   (2012-07-11 21:31) [18]

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



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.048 c
15-1344534989
Прогер
2012-08-09 21:56
2013.03.22
Как поместить в Clipboard любой файл?


3-1287589173
Grom
2010-10-20 19:39
2013.03.22
БД+КЛиент-сервер(сокеты) DELPHI


2-1337367250
TStas
2012-05-18 22:54
2013.03.22
Перехвать изменений текста в ричЭдите


2-1331044976
Сергей
2012-03-06 18:42
2013.03.22
Как устранить ошибку подключения к базе данных?


2-1344669607
Наивный
2012-08-11 11:20
2013.03.22
FreeAndNil, пожалуйста, еще раз.