我正在开发具有输入字段的应用程序,每当用户输入控件时,就会通过按钮生成额外的面板。
这些按钮的标题代表特殊的符号,例如度数,希腊符号。
当按下按钮时,应在输入字段TEdit现有文本中添加相应的特殊字符。
表单上有许多输入字段。因此,在TEdit的每个OnEnter事件上,它将生成特殊符号选择面板,而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)
具有相同的参数Sender,它们在事件发生时使用,但是参数Edit是额外的参数,它已经由人工分配,应该由AddSpecSymbol使用。好的,我希望我写的所有内容都能让您理解,如果没有,请告诉我,我将尝试进行编辑。
谢谢
最佳答案
您可以以指定当前TEdit的形式引入一个字段。输入字段时将其设置为TEdit(Sender),离开字段时将其设置为nil。然后,OnClick事件可以使用此字段来访问适当的TEdit。