procedure TTjtbForm.ComboBox1Change(Sender: TObject);
begin
  If PageControl1.ActivePage=TabSheet1 Then
    Begin
      ComboBox1.OnChange:=TabSheet1.OnShow;
    End
  Else
    ComboBox1.OnChange:=TabSheet3.OnShow;
end;这里有个问题,就是第一次点击的时候不会动:(要到第二次点击才会生效)
有没有什么方法让他第一次点击的后就会执行OnShow的事件

解决方案 »

  1.   

    就是把ComboBox1.OnChange事件指向TabSheet中的OnShow啊
      

  2.   

    因为我有一个公用控件,也就是ComboBox,无论是TabSheet1还是TabSheet3激活,都要调用ComboBox的值,所以要这样做
      

  3.   

    你直接调用就可以了,与TabSheet是否激活没有关系的
      

  4.   

    上面就是TTjtbForm.ComboBox1Change的完整事件啊!!!
    但第一次点击的时候  ComboBox1.OnChange:=TabSheet3.OnShow;
    不起作用,也就是说,第一次点击后,只是赋值了,怎么才能让他运行OnShow事件?
      

  5.   

    怎么才能让他运行OnShow事件?-‘他 ’是指什么?你想让TabSheet3 Show出来了吗?
      If PageControl1.ActivePage=TabSheet3 Then
        TabSheet1.Show
      Else
        TabSheet3.Show;
      

  6.   

    procedure TTjtbForm.ComboBox1Change(Sender: TObject);
    begin
      If PageControl1.ActivePage=TabSheet1 Then
        Begin
          ComboBox1.OnChange:=TabSheet1.OnShow;
        End
      Else
        ComboBox1.OnChange:=TabSheet3.OnShow;
    end;
    ----------
    按照你上面写的,我试验一点反应也没有
    可能我还比较水,所以还没见过你那样的写法
    你想用ComboBox1的值,与激活TabSheet不知道有什么关系?
    你可以把代码发源程序发给我看看
    [email protected]
      

  7.   

    呵呵!有反应啊!因为TabSheet激活的时候,提取数据的操作都在OnShow里面,但有一个参数,也就是ComboBox1的值,而ComboBox1是一个公用的控件(也就是TabSheet1与3都要调用),就不能简单的把他的OnChange事件设为TabSheet1或TabSheet3,又不愿意把那些代码贴到这边来,所以就搞了个这种东东,不过不是很成功,第一次点击没反应:),再点就有了:),就来问问大家有什么好办法让他第一次点击的时候就能成功运行TabSheet的OnShow事件