Варианты:
- В редакторе свойств можно выбрать одну и ту же процедуру обработки события из списка.
- Вызывать общую процедуру из текущего обработчика.
- Сложнее вариант,сделать класс насленик TEdit и в нем добавить обработчик.
"Как их объединить в одну процедуру и вызывать её при OnKeyPress в эдитах?"
Шаг 1: В классе форме объявляется функция, например
- Код: Выделить всё
public
{ public declarations }
function KeyPrepare (Sender:TEdit; Key: char):char;
Шаг 2: Встаем на название функции жмем [Ctrl]+[Shift]+[с], лазарус делает нам реализацию
- Код: Выделить всё
function TForm1.KeyPrepare(Sender: TEdit; Key: char): char;
begin
//пишем повторяющийся код
case key of
'0'..'9',#8,',':;
else
key:=#0;
end;
if key=','
then
begin
if (Length(Sender.Text)<=0) or (Pos(',',Sender.Text)<>0)
then Key:=#0;
end;
Result:=Key;
end;
Шаг 3: В обработчиках каждого из "много Эдитов" пишем:
- Код: Выделить всё
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
begin
Key := KeyPrepare(TEdit(Sender),Key);
//дальше, что нам надо
end;
Кстати, мой внутренний телепат говорит, что вам лучше использовать "TMaskEdit" c закладки Additional палитры компонентов.