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事件检查项目的标题,然后浏览一个specefic链接,这不起作用,我尝试了切换方法也没有工作(抱歉我的英语不好),任何建议我怎么能做它有用吗?
答案 0 :(得分:3)
究竟是什么"不起作用"为了你?你需要更具体。您提供的代码没有任何问题,只要事先声明并分配了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
,等等。
如果您实际上只有一个对象Caption
根据其他条件动态更改,那么这种方法仍然有效,只需在更新{{1}时相应地更新Tag
}。