OnClick 多个条件
OnClick multiple conditions
procedure TForm1.Panel3Click(Sender: TObject);
begin
if item.caption='1' then
begin
form2.WebBrowser1.Navigate('link1');
form2.Caption:='1';
form2.Show;
end;
if item.caption='2' then
begin
form2.WebBrowser1.Navigate('link2');
form2.Caption:='2';
form2.Show;
end;
end.
我想做的是在 Onclick 事件上检查项目的标题,然后浏览一个特定的 link,这不起作用,我尝试了 switch 方法也不起作用(抱歉我的英语不好),任何关于如何让它发挥作用的建议?
"doesnt work" 对您来说究竟是什么?你需要更具体。您显示的代码没有任何问题,前提是 item
已事先声明并分配(并且 end.
实际上是 end;
)。
我怀疑你想让item
成为被点击的对象,是吗?如果是这样,那么您只需将此 OnClick
句柄分配给相关对象,然后相应地对 Sender
参数进行类型转换,例如:
procedure TForm1.PanelClick(Sender: TObject);
var
item: TPanel;
begin
item := Sender as TPanel; // or TMenuItem, or whatever you are using...
if item.Caption = '1' then
begin
Form2.WebBrowser1.Navigate('link1');
Form2.Caption := '1';
Form2.Show;
end
else if item.Caption = '2' then
begin
Form2.WebBrowser1.Navigate('link2');
Form2.Caption := '2';
Form2.Show;
end;
end;
就我个人而言,我不会使用 Caption
来做决定。我会做一些更像这样的事情:
const
Links: array[1..2] of string = (
'link1',
'link2'
// and so on...
);
procedure TForm1.PanelClick(Sender: TObject);
var
item: TPanel;
begin
item := Sender as TPanel; // or whatever...
Form2.WebBrowser1.Navigate(Links[item.Tag]);
Form2.Caption := item.Caption;
Form2.Show;
end;
其中 Caption='1'
的对象分配了 Tag=1
,Caption='2'
的对象分配了 Tag=2
,依此类推。
如果您实际上只有 1 个对象,您可以根据其他条件动态更改其 Caption
,那么这种方法仍然有效,只需在更新 [= 时相应地更新 Tag
18=].
procedure TForm1.Panel3Click(Sender: TObject);
begin
if item.caption='1' then
begin
form2.WebBrowser1.Navigate('link1');
form2.Caption:='1';
form2.Show;
end;
if item.caption='2' then
begin
form2.WebBrowser1.Navigate('link2');
form2.Caption:='2';
form2.Show;
end;
end.
我想做的是在 Onclick 事件上检查项目的标题,然后浏览一个特定的 link,这不起作用,我尝试了 switch 方法也不起作用(抱歉我的英语不好),任何关于如何让它发挥作用的建议?
"doesnt work" 对您来说究竟是什么?你需要更具体。您显示的代码没有任何问题,前提是 item
已事先声明并分配(并且 end.
实际上是 end;
)。
我怀疑你想让item
成为被点击的对象,是吗?如果是这样,那么您只需将此 OnClick
句柄分配给相关对象,然后相应地对 Sender
参数进行类型转换,例如:
procedure TForm1.PanelClick(Sender: TObject);
var
item: TPanel;
begin
item := Sender as TPanel; // or TMenuItem, or whatever you are using...
if item.Caption = '1' then
begin
Form2.WebBrowser1.Navigate('link1');
Form2.Caption := '1';
Form2.Show;
end
else if item.Caption = '2' then
begin
Form2.WebBrowser1.Navigate('link2');
Form2.Caption := '2';
Form2.Show;
end;
end;
就我个人而言,我不会使用 Caption
来做决定。我会做一些更像这样的事情:
const
Links: array[1..2] of string = (
'link1',
'link2'
// and so on...
);
procedure TForm1.PanelClick(Sender: TObject);
var
item: TPanel;
begin
item := Sender as TPanel; // or whatever...
Form2.WebBrowser1.Navigate(Links[item.Tag]);
Form2.Caption := item.Caption;
Form2.Show;
end;
其中 Caption='1'
的对象分配了 Tag=1
,Caption='2'
的对象分配了 Tag=2
,依此类推。
如果您实际上只有 1 个对象,您可以根据其他条件动态更改其 Caption
,那么这种方法仍然有效,只需在更新 [= 时相应地更新 Tag
18=].