Форум: "Начинающим";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];
ВнизНазначение клавишам действий Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.047 c