![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Получение кода нажатых клавиш формы запущенной как 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);
из основной программы Что подтсавлять в параметры? или как вообще дейтствовать?..