Я разрабатываю приложение, в котором есть поля ввода, и всякий раз, когда пользователь входит в элемент управления, с помощью кнопок создается дополнительная панель.
Кнопки имеют подписи, представляющие специальные символы, такие как градусы, греческие символы.
При нажатии кнопки соответствующий специальный символ должен быть добавлен в поля ввода TEdit существующий текст.
В форме много полей ввода. Таким образом, при каждом событии OnEnter TEdit он генерирует специальный символ выбора панель, а событие OnExit освобождает панель.
Я хочу как-то сказать кнопке, к которой TEdit он должен добавить символ, когда он нажимается.
procedure TForm1.SpecSimboliai(Parent: TWinControl; Edit: TEdit);
var
pSpec: TPanel;
oClose: TPanelEx;
sTekstas: TLabel;
oButton: TPanelEx;
begin
pSpec := TPanel.Create(Self);
pSpec.Parent := Parent;
pSpec.Align := alBottom;
pSpec.Height := 38;
pSpec.Name := 'spec';
pSpec.Caption := '';
pSpec.ParentBackground := false;
sTekstas := TLabel.Create(Self);
sTekstas.Parent := pSpec;
sTekstas.Left := 10;
sTekstas.Top := 12;
sTekstas.Caption := 'Specialūs simboliai:';
oClose := TPanelEx.Create(Self);
oClose.Parent := pSpec;
...
oClose.Top := 2;
oClose.Anchors := [akTop,akRight];
oClose.OnClick := UzdarytiSpec;
oButton := TPanelEx.Create(Self);
oButton.Parent := pSpec;
oButton.Width := 14;
oButton.Height := 14;
oButton.CenterText := true;
oButton.Caption := #$00B0;
oButton.OnClick := AddSpecSymbol;
... //several other buttons
end;
Эта процедура выполняется для события TEdit.OnEnter
, которое выглядит как
..InputEnter(Sender: TObject);
begin
SpecSimboliai(TEdit(Sender).Parent,TEdit(Sender));
end;
Таким образом, панель, метка, кнопка закрытия и кнопка со знаком степени созданы в приведенном выше коде.
Я хочу передать параметр Edit кнопке, чтобы он знал, с каким контроллером он работает, однако я понятия не имею, как это сделать, поскольку событие oButton.OnClick
ожидает только один параметр, что Sender: TObject
.
То, что я хотел бы себе представить, выглядит примерно так:
oButton.OnClick := AddSpecSymbol(Edit);
Так что это будет звучать так: oButton.OnClick(Sender: TObject)
и AddSpecSymbol(Sender: TObject; Edit: TEdit)
имеют одинаковый параметр Отправитель , который они используют при возникновении события, но параметр Edit является дополнительным, который назначается уже вручную и должен использоваться AddSpecSymbol .
хорошо, я надеюсь, что все, что я написал, можно понять, если нет, скажите мне, и я постараюсь отредактировать.
Спасибо