Форум: "Основная";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
ВнизПереопределение события. Найти похожие ветки
← →
apic © (2006-10-01 10:55) [0]Как сделать, чтобы при нажатии на ентер кнопка находящаяся в фокусе ввода не нажималась, а производились действия запланированные программистом, типа перехватить нажатие ентера?
← →
Kolan © (2006-10-01 11:04) [1]
> находящаяся в фокусе ввода не нажималась
Может легче св-во формы:KeyPreview установить в True;
и пользоваться событием формыOnKeyPress
илиOnKeyDown
?
← →
apic © (2006-10-01 11:07) [2]Гажати кнопки все равно происходит!
← →
X9 © (2006-10-01 11:10) [3]> [1] Kolan © (01.10.06 11:04)
>
> > находящаяся в фокусе ввода не нажималась
>
> Может легче св-во формы: KeyPreview установить в True;
> и пользоваться событием формы OnKeyPress или OnKeyDown
> ?
В случае с TButton это не поможет. Нужно перехватывать нажатие клавиши именно для кнопки.
← →
Kolan © (2006-10-01 11:28) [4]Да, действительно не работает :)
← →
apic © (2006-10-01 11:39) [5]Ну так какие предложения?
← →
Percent (2006-10-01 11:44) [6]Ну так какие предложения?
Унаследовать кнопочку. Дописать/переписать реакцию на сообщения от клавиатуры.
← →
Kolan © (2006-10-01 11:55) [7]
реакцию на сообщения от клавиатуры.
А как называется соотв процедура/функция ?
← →
X9 © (2006-10-01 12:04) [8]Нужно ловить сообщение WM_KEYDOWN в реализации собственного комонента.
Но IMHO это неправильный путь, проще проверять в OnClick не нажата ли клавиша Enter.
← →
X9 © (2006-10-01 12:21) [9]Напрмер, вот так:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
function EnterPressed: Boolean;
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.EnterPressed;
begin
if GetKeyState(VK_RETURN) and 1 > 0 then
begin
ShowMessage("Enter key pressed");Enter
Result := True;
end else
Result := False;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if EnterPressed then
Exit;
ShowMessage("Button1 pressed");
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if EnterPressed then
Exit;
ShowMessage("Button2 pressed");
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if EnterPressed then
Exit;
ShowMessage("Button3 pressed");
end;
end.
← →
X9 © (2006-10-01 12:26) [10]Ой, в код забаралась ошибка:
Напрмер, вот так:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
function EnterPressed: Boolean;
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.EnterPressed;
begin
if GetKeyState(VK_RETURN) and 1 > 0 then
begin
ShowMessage("Enter key pressed");
Result := True;
end else
Result := False;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if EnterPressed then
Exit;
ShowMessage("Button1 pressed");
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if EnterPressed then
Exit;
ShowMessage("Button2 pressed");
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if EnterPressed then
Exit;
ShowMessage("Button3 pressed");
end;
end.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.04 c