gpt4 book ai didi

delphi - 编辑框上的文本更改

转载 作者:行者123 更新时间:2023-12-03 18:19:04 25 4
gpt4 key购买 nike

我将编辑框用作圆形计数器。我希望当 text = 5 或 10 时显示此消息,然后它会执行一些功能。但即使回合是 5 或 10,我也从未收到此消息 ERoundChange 是 ERound(编辑框)的 OnChange 事件;知道为什么它不起作用吗?我假设我使用的 Self 错了?

{Check if round is 5 or 10}
//-----------------------------------------------------
procedure TBaseGameForm.ERoundChange(Sender: TObject);
//-----------------------------------------------------
begin
if (self.Text = '5') or (self.Text = '10') then
begin
showmessage('checking stats for gryph locations on round: '+self.Text);

end;
end;

我也像这样在每个玩家开始时改变回合

ERound.Text := inttostr(Strtoint(ERound.Text)Mod 10+1);

最佳答案

由于ERoundChangeTBaseGameForm的一个方法,Self指的是TBaseGameForm的当前实例,即, 到表单,而不是其中的编辑框。

因此,Self.Text 是表单的标题,而不是编辑框内的文本。如果编辑框名为 Edit1,您应该这样做

procedure TBaseGameForm.ERoundChange(Sender: TObject);
begin
if (Edit1.Text = '5') or (Edit1.Text = '10') then
ShowMessage('checking stats for gryph locations on round: '+ Edit1.Text);
end;

你也可以这样做

procedure TBaseGameForm.ERoundChange(Sender: TObject);
begin
if ((Sender as TEdit).Text = '5') or ((Sender as TEdit).Text = '10') then
ShowMessage('checking stats for gryph locations on round: '+ (Sender as TEdit).Text);
end;

因为引起事件的控件存储在 Sender 参数中。但是由于 Sender 被声明为 TObject,您需要将其转换为实际的 TEdit

[你本可以自己想出来的。事实上,过程 TBaseGameForm.ERoundChange 本身与编辑控件无关——当然,它被分配给这个控件的一个事件,但当然你也可以将它分配给其他控件,并以您喜欢的任何其他方式使用它。因此,就其本身而言,它仅与 TBaseGameForm 关联,所以实际上,Self 在逻辑上不能指代任何其他内容。]

关于delphi - 编辑框上的文本更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13442328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com