Enter = Tab

Ответить
Аватара пользователя
Nealles

Enter = Tab

Сообщение Nealles »

Можно ли как нибудь перестроить клавиши впроге.



Например, нажатие Enter равносильно нажатию TAB
Аватара пользователя
Nealles

Re: Enter = Tab

Сообщение Nealles »

В какой проге? Общее решение - перехватить клавишу и делать с ней все, что хочешь Изображение
Аватара пользователя
CyberDaemon

Re: Enter = Tab

Сообщение CyberDaemon »

Перехватить нажатие клавиши - это просто



А вот как эмулировать нажатие клавиши TAB - вот это вопрос
Аватара пользователя
Nealles

Re: Enter = Tab

Сообщение Nealles »

The keybd_event function synthesizes a keystroke. The system can use such a synthesized keystroke to generate a WM_KEYUP or WM_KEYDOWN message. The keyboard driver's interrupt handler calls the keybd_event function.



Если нужно подробнее - могу пример на Делфи запостить.
Аватара пользователя
CyberDaemon

Re: Enter = Tab

Сообщение CyberDaemon »

Скинь мне, плиз!!!



[url=mailto:buylov_va@kalmsu.ru]buylov_va@kalmsu.ru[/url]
Аватара пользователя
Nealles

Re: Enter = Tab

Сообщение Nealles »

Я в качестве справочника использую "Советы по Делфи" от Валентина Озерова. А он сжатый весит 3,5 метра. Такие объемы мылом.... Поиском в инете находится на раз:



Советы по Delphi от Валентина Озерова (2000 советов):
Оглавление
(39.6K) +
1..1000
(1.93M) +
1000..2000
(1.56M)

Смотрелка HTML Help без IE
(416K)



Модераторы не обидятся, если я сюда пример запостю?



Подскажите пожалуйста как сделать имитацию ввода с клавиатуры для программы выполняющейся в дос-окне





Код:

Код: Выделить всё

const
ExtendedKeys: set of Byte = [ *// incomplete list
VK_INSERT, VK_DELETE, VK_HOME, * VK_END, * *VK_PRIOR, * VK_NEXT,
VK_LEFT, * VK_UP, * * VK_RIGHT, *VK_DOWN, * VK_NUMLOCK
];
procedure SimulateKeyDown(Key : byte);
var
flags: DWORD;
begin
if Key in ExtendedKeys then flags := KEYEVENTF_EXTENDEDKEY else flags := 0;
keybd_event(Key, MapVirtualKey(Key, 0), flags, 0);
end;
procedure SimulateKeyUp(Key : byte);
var
flags: DWORD;
begin
if Key in ExtendedKeys then flags := KEYEVENTF_EXTENDEDKEY else flags := 0;
keybd_event(Key, MapVirtualKey(Key, 0), KEYEVENTF_KEYUP or flags, 0);
end;
procedure SimulateKeystroke(Key : byte);
var
flags: DWORD;
scancode: BYTE;
begin
if Key in ExtendedKeys then flags := KEYEVENTF_EXTENDEDKEY else flags := 0;
scancode := MapVirtualKey(Key, 0);
keybd_event(Key,
scancode,
flags,
0);
keybd_event(Key,
scancode,
KEYEVENTF_KEYUP or flags,
0);
end;

[s]Исправлено: CyberDaemon, 17:00 2-06-2003[/s]
Аватара пользователя
Song

Re: Enter = Tab

Сообщение Song »

TForm.KeyPreview:=True



Procedure TForm1.Form1KeyDown(...);

Begin

IF Key=VK_RETURN then SelectNext(ActiveControl,True,True);

End;
Аватара пользователя
Song

Re: Enter = Tab

Сообщение Song »

Для Delphi:



Код:

Код: Выделить всё

 
unit Unit1; 
interface 
uses 
 *Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
 *Dialogs, StdCtrls; 
type 
 *TForm1 = class(TForm) 
 * *Edit1: TEdit; 
 * *Edit2: TEdit; 
 * *Button1: TButton; 
 * *Button2: TButton; 
 * *Label1: TLabel; 
 * *procedure Button1Click(Sender: TObject); 
 *private 
 * *{ Private declarations } 
 *protected 
 *procedure Enter_Tab(var Msg:TMessage);message CM_DIALOGKEY; 
 *public 
 * *{ Public declarations } 
 *end; 
var 
 *Form1: TForm1; 
implementation 
{$R *.dfm} 
{ TForm1 } 
procedure TForm1.Enter_Tab(var Msg: TMessage); 
begin 
if msg.WParam=13 then 
begin 
Perform(CM_DIALOGKEY,9,0); 
msg.Result:=1;//отключаем обработку нажатия Enter 
end 
else 
inherited; 
end; 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
ShowMessage('Enter=Tab'); 
end; 
end.

[/b]

************************************************

Для C++ (CBuilder6):

Заголовочный файл

//---------------------------------------------------------------------------



Код:

Код: Выделить всё

 
#ifndef UnMainH 
#define UnMainH 
//--------------------------------------------------------------------------- 
#include  
#include  
#include  
#include  
//--------------------------------------------------------------------------- 
class TForm1 : public TForm 
{ 
__published:// IDE-managed Components 
 * * * *TButton *Button1; 
 * * * *TEdit *Edit1; 
 * * * *TEdit *Edit2; 
 * * * *TButton *Button2; 
 * * * *TButton *Button3; 
private:// User declarations 
protected: 
void __fastcall KeyCatch(TMessage &Msg); 
BEGIN_MESSAGE_MAP 
MESSAGE_HANDLER(CM_DIALOGKEY,TMessage,KeyCatch) 
END_MESSAGE_MAP(TForm) 
public: 
// User declarations 
 * * * *__fastcall TForm1(TComponent* Owner); 
}; 
//--------------------------------------------------------------------------- 
extern PACKAGE TForm1 *Form1; 
//--------------------------------------------------------------------------- 
#endif

[/b]



Файл реализации

//---------------------------------------------------------------------------



Код:

Код: Выделить всё

 
#include  
#pragma hdrstop 
#include "UnMain.h" 
//--------------------------------------------------------------------------- 
#pragma package(smart_init) 
#pragma resource "*.dfm" 
TForm1 *Form1; 
//--------------------------------------------------------------------------- 
__fastcall TForm1::TForm1(TComponent* Owner) 
 * * * *: TForm(Owner) 
{ 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::KeyCatch(TMessage &Msg) 
{ * 
 * if( Msg.WParam==13){ 
 * Perform(CM_DIALOGKEY,9,0); 
 * *Msg.Result=1;//отключаем обработку нажатия Enter * 
 * } else * TForm::Dispatch(&Msg); 
} 
void __fastcall TForm1::Button1Click(TObject *Sender) 
{ 
ShowMessage("Enter=Tab"); 
}

[/b]

//---------------------------------------------------------------------------

Изображение



[s]Исправлено: Vla2003, 20:31 7-06-2003[/s]





[s]Исправлено: Vla2003, 12:27 9-06-2003[/s]
Ответить

Вернуться в «Программирование и базы данных»