Самый простой способ IMO - также сохранить номер, являющийся заголовком кнопки, в свойстве тега кнопки.Затем вы можете использовать один и тот же обработчик событий для всех кнопок:
procedure TForm1.NumButtonClick(Sender: TObject);
var
NumTyped: Integer;
begin
NumTyped := TButton(Sender).Tag;
end;
Другой альтернативой является чтение заголовка в событии, но затем вам нужно выполнить преобразование из строки в целое число, которое прервется, есливы случайно назначаете кнопку без числового заголовка для обработчика событий:
procedure TForm1.NumButtonClick(Sender: TObject);
var
NumTyped: Integer;
begin
NumTyped := StrToInt(TButton(Sender).Caption);
end;
Обратите внимание, что таким образом вам не нужно заботиться о том, является ли ваш компонент ActiveControl или нет;вы просто назначаете обработчик событий каждой кнопке вашего компонента и ничего больше, а затем, если событие инициируется, вы знаете, что активным элементом управления является ваш компонент и какая из его кнопок была нажата.
РЕДАКТИРОВАТЬ: Исходя из комментария ниже, есть немного больше вопроса, чем кажется.
Если вы пытаетесь отправить номер в TEdit (ваше "текстовое поле"), у вас естьсделать пару других вещей.Во-первых, не используйте TButtons или TBitBtns, так как они получают фокус и отвлекают его от элемента управления «Редактировать».Вместо этого используйте TSpeedButton.Установите заголовок каждого, который вы хотите, на номер, который вы хотите поместить в TEdit.
Во-вторых, поскольку вы хотите поместить содержимое в TEdit, вам не нужно беспокоиться о теге.Установите обработчик события для всех TSpeedButtons на этот (который предполагает, что ваш TEdit - Edit1):
procedure TForm1.NumButtonClick(Sender: TObject);
begin
Edit1.SelText := TSpeedButton(Sender).Caption;
end;
Это заменяет любой выбранный текст в TEdit Edit1 заголовком SpeedButton, или добавляет его втекущая позиция каретки (редактирования курсора) в TEdit.
Если вы хотите поместить его в любой из нескольких TEdits, небольшое изменение также с этим справится:
procedure TForm1.NumButtonClick(Sender: TObject);
begin
if ActiveControl is TEdit then
TEdit(ActiveControl).SelText := TSpeedButton(Sender).Caption;
end;
Если это не то, чего вы хотите достичь, отредактируйте исходный вопрос и добавьте к нему дополнительную информацию, чтобы у нас была возможность помочь вам получить ваш ответ.