OnClick多个条件

时间:2015-03-26 20:54:59

标签: delphi if-statement onclick delphi-7

 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链接,这不起作用,我尝试了切换方法也没有工作(抱歉我的英语不好),任何建议我怎么能做它有用吗?

1 个答案:

答案 0 :(得分:3)

究竟是什么"不起作用"为了你?你需要更具体。您提供的代码没有任何问题,只要事先声明并分配了itemend.确实是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=1Caption='2'的对象已分配Tag=2,等等。

如果您实际上只有一个对象Caption根据其他条件动态更改,那么这种方法仍然有效,只需在更新{{1}时相应地更新Tag }。