Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.109 c
15-1334867402
Юрий
2012-04-20 00:30
2013.03.22
С днем рождения ! 20 апреля 2012 пятница


15-1340285388
Progger2017
2012-06-21 17:29
2013.03.22
Pattern Maker (создание повтор. рисунков на поле)


2-1331617183
TSubject
2012-03-13 09:39
2013.03.22
Null значение в поле Number (DBF )


15-1352384190
Artem
2012-11-08 18:16
2013.03.22
Можно ли сменить размер виртуального диска в VirtualBox?


3-1283937300
Den
2010-09-08 13:15
2013.03.22
Запись изображения в БД





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский