Отмяна на натиснат клавиш Edit-e

Имаше нужда от ограничаване на операторите при въвеждане на текст за търсене в базата данни. Определянето кой клавиш е натиснат е просто елементарно, но как да го направите така, че ако стойността е невалидна, текстът да не се въвежда в Редактиране?

Хващате натискане на клавиш, проверявате го и ако стойността е невалидна, присвоявате key := 0

Хвърлете част от кода, всичко трябва да работи!

Ами например в OnKeyPress пиша if key

Уф, хванат не в OnKeyPres, а в OnKeyDown

? всичко работи

В OnKeyPress такъв код също няма да работи.

Може би бъркам нещо? Но с такъв код не трябва да отпечатва буквите ABC и т.н.

Според мен събитието OnKeyDown се използва най-добре за деактивиране на натискането на функционални и спомагателни клавиши.

За забрана на писма е най-добре да използвате:

procedure TForm1.RichEdit1KeyPress(Sender: TObject; var Key: Char); започнете ако въведете ["A".."Z", "a".."z", "A".."Z", "a"..."z"] след това ключ:=#0; край;

Вярно, номерата тепърва ще се разпечатват :).

И ако внимателен потребител вземе и постави текст от клипборда. Ще забраните ли използването и на клипборда? Моят съвет към вас, след като натиснете бутона "търсене", проверете дали текстът в полето за редактиране е правилен, ако не, тогава кълнете се "невалидна стойност".

TMaskEdit и ще си доволен.