Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.12;
Скачать: CL | DM;

Вниз

Переопределение события.   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.06 c
15-1161706480
Dmytro
2006-10-24 20:14
2006.11.12
Проблема с кодировкой (MSSQL 2005 и PHP5)


2-1161930250
ГореПрограммер
2006-10-27 10:24
2006.11.12
Размер файла


15-1161950797
Stanislav
2006-10-27 16:06
2006.11.12
Где можно взять карту


15-1161891696
Alral
2006-10-26 23:41
2006.11.12
Книга Delphi в шутку и всерьез. Где взять файлы на CD?


8-1144416142
NightLord
2006-04-07 17:22
2006.11.12
TGA and GLScene