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

Вниз

Назначение клавишам действий   Найти похожие ветки 

 
alikon1   (2007-11-15 00:10) [0]

Здравствуйте. Допустим есть калькулятор, где есть кнопки 0..9, +,-,*,/ и .т.д. Как можно сделать так, чтоб при нажатии клавиши на настоящей клавиатуре (например 3, ну или +) выполнялась процедура кнопки калькулятора (соответственно для 3, ну или +). Другими словами, чтоб считать мог в калькуляторе не только кликая мышкой по кнопочкам, но и непосредствеено вводом с клавиатуры. Как делать процедуры на кнопки научился, а вот на клавиши клавиатуры никак не получается.
Ну или еще ситуация для применения: надо чтоб при нажатии любой кнопки/клавиши, еще параллельно с непосредственным выполнением соответствующей процедуры, выполнялась еще и процедура кнопки "равно". Спасибо.


 
Zeqfreed ©   (2007-11-15 00:16) [1]

Св-во формы KeyPreview в true. И обрабатывай ее события OnKeyUp / OnKeyDown / OnKeyPress.


 
alikon1   (2007-11-15 00:51) [2]

Св-во формы KeyPreview в true сделал. Вот так пробую - пишет Not enough actual parameters. А как надо? Или я неправильно понял.

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
case key of
"a": TForm1.Button1Click;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
edit2.Text:="Basta";
end;


 
Anatoly Podgoretsky ©   (2007-11-15 00:55) [3]

> alikon1  (15.11.2007 00:51:02)  [2]

Ну правильно не хватает, у метода один параметр, а не ноль.


 
Vice____   (2007-11-15 01:12) [4]

Button1.Click;


 
alikon1   (2007-11-15 01:16) [5]

подскажите пожалуйста, как было бы правильно.  Я понятия не имею, что за параметр такой.
Button1.Click; то же самое выдает


 
Vice____   (2007-11-15 01:18) [6]

и совет обрабатывай KeyUp KeyDown если так нужно


 
ASoft   (2007-11-15 03:33) [7]

alikon1 сравни

> "a": TForm1.Button1Click;

и

> procedure TForm1.Button1Click(Sender: TObject);

чувствуешь разницу?


 
ЮЮ ©   (2007-11-15 03:40) [8]

> case key of
> "a": TForm1.Button1Click;
> end;
> end;


1) Button1Click - это не классовый метод, поэтому TForm1. - лишнее;
2) метод TForm1.Button1Click имеет параметр, поэтому при его вызове следует указывать значение.

Итак

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
 case key of
   "a":
     begin
       Button1Click(Button1);
       Key := #0;
     end;
 end;
end;


 
alikon1   (2007-11-15 07:55) [9]


> > "a": TForm1.Button1Click;
>
> и
>
> > procedure TForm1.Button1Click(Sender: TObject);
>
> чувствуешь разницу?


Разницу то "чувствую", только вот
"a": procedure TForm1.Button1Click(Sender: TObject); пробовал, и
"a": TForm1.Button1Click(Sender: TObject); пробовал и ничего не работало

ЮЮ: Спасибо большое, так заработало


 
alikon1   (2007-11-15 08:00) [10]

Теперь сразу другой вопрос появился. А как сделать, чтоб не на нажатие одной клавиши процедура выполнялась, а комбинации. Например скобки нужны ( Shift+")" ). Как в такой ситуации быть?


 
Skyle ©   (2007-11-15 08:25) [11]

Может уже стоит посмотреть TAction/TActionList?


 
alikon1   (2007-11-21 08:14) [12]

А как вот такое сделать:

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
case key of
  "a":
    begin
      Button1Click(Button1);
      Key := #0;                         //а это чего код?
    end;
end;
end;

только не по клавише "а", а на Delete нужно нажимать.

backspaсe #8 нашёл, а у Delete то ли нет кода, может не нашёл просто.


 
Skyle ©   (2007-11-21 08:21) [13]


> backspaсe #8 нашёл, а у Delete то ли нет кода, может не
> нашёл просто

Есть такая штука как virtual key codes, по этому сочетанию легко ищется в справке. Для Delete будет значение VK_DELETE. Для BackSpace - VK_BACK



Страницы: 1 вся ветка

Текущий архив: 2007.12.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
11-1181380412
mdw
2007-06-09 13:13
2007.12.16
Версия 2.65


9-1163835666
netlooker
2006-11-18 10:41
2007.12.16
Проблема с колизиями


3-1186648790
alsov
2007-08-09 12:39
2007.12.16
Оптимизация запроса


2-1195375211
JJLev
2007-11-18 11:40
2007.12.16
TSpeedButton +Canvas +Rect


15-1195120254
WFS
2007-11-15 12:50
2007.12.16
Как переименовать Unit?