Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизПолучение кода нажатых клавиш формы запущенной как 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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.072 c