举例说明:form1里有chart1,chart2,…chart10,button1等组件,我现在希望选中任意一个chart,再点击button1按钮就能弹出一个对话框,显示出选中的组件的名字。请问大家怎样来实现呢?谢谢!!!

解决方案 »

  1.   

    Self.ActiveControl.Name 只作用于继承TWinControl的控件
      

  2.   

    我用了楼上的代码,结果点击button时,弹出来的是button的名字,怎样能选中chart呢?
      

  3.   

    不知道能不能满足您的要求?
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Chart1: TChart;
        Chart2: TChart;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        FCurrentChart: TChart;
        procedure ChartClick(Sender: TObject);
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
      if FCurrentChart <> nil then
       ShowMessage(FCurrentChart.Name);
    end;procedure TForm1.ChartClick(Sender: TObject);
    begin
      if Sender is TChart then
        FCurrentChart := Sender as TChart;
    end;procedure TForm1.FormCreate(Sender: TObject);
    var
      Idx: Integer;
    begin
      for Idx := 0 to Pred(ComponentCount) do
        if Components[Idx] is TChart then
          (Components[Idx] as TChart).OnClick := ChartClick;
    end;
      

  4.   

    谢谢楼上的大哥,我要的就是这个效果,我还有一个问题,我知道不能连续问,但是我确实想知道,我可以再加分,呵呵,是这样的:我已经能选中chart1了,我想一点击button1能让chart1放大,它也的确放大了,可是它总是在chart2底下,怎样才能让它放大后在最上层呢?谢谢!我还加分,一定!
      

  5.   

    选中最上面的窗体,点击右键,在弹出的快捷菜单中选择contorl的send to back就可以了哈!!
      

  6.   

    控件有BringtoFront的方法,Click事件的时候,调用FCurrentChart(如果你用了老冯的程序)的这个方法就可以了