Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1195840718
vegarulez
2007-11-23 20:58
2007.12.16
Вопрос про кол-во элементов в array[0..x] of string


15-1195192823
MBo
2007-11-16 09:00
2007.12.16
Пятничные задачки. Вася Пупкин еще жив ;)


2-1195383305
piko
2007-11-18 13:55
2007.12.16
картинка в фоне грида


2-1195422476
bbb
2007-11-19 00:47
2007.12.16
Компонент cxRadioGroup


4-1180497793
AndreyRU
2007-05-30 08:03
2007.12.16
Вне зоны доступа! WM_MOUSEMOVE





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский