我用memo: array[0..9] of tmemo 定义10个memo,然后动态生成,
for i:=0 to 9 do
  begin
    memo[i]:=tmemo.create(self);
    memo[i].Parent:=form1;
  end;
现在我想通过单击某一个memo,读出他里面的内容,应该怎么做呀?!请各位大虾指教,在线等待,急!!!!得到解决方法,立即结贴!!!

解决方案 »

  1.   

    for i:=0 to 9 do
      begin
        memo[i]:=tmemo.create(self);
        memo[i].Parent:=form1;
        memo1.onclick:=YouClick(Sender :TObject);//这是你要执行的过程
      end;
      

  2.   

    chengr9754(独自浪迹天涯):你没弄明白我的意思,即使如你所说,假如我在youclick里面有这样的代码:
    showmessage(memo[i].text);
    这样出来的也只是最后一个memo 的内容,而不是我当前单击的memo的内容,我必须想办法在单击某一个memo的时侯,得到单前i的值,这样才能正确的读出当前memo的内容。
      

  3.   

    showmessage( (sender as TMemo).text);
      

  4.   

    (采菊南山下):你提的方法也不行,出现错误:invalid class typecase.
    我的想法是这样的:
    for j:=0 to i do
      begin
        if memo[j].处于活动状态
          then
            break;
      end;
    showmessage(memo[j].text);
    我现在就是不知道怎样判断一个memo控件是否处于活动状态,就象有一个setfouse把焦点赋予某一个控件一样,我现在只是想知道一个控件是否获得了焦点。还是要谢谢你的参与。
      

  5.   

    我说的详细点吧。
    procedure TForm1.YouClick(Sender :TObject);
    begin
      ...
      if Sender is TMemo then begin
         Showmessage( (Sender as TMemo).Text);
       end;
      ...
    end;for i:=0 to 9 do
      begin
        memo[i]:=tmemo.create(Application);
        memo[i].Parent:=form1;
        memo1.onclick:=YouClick(Sender :TObject);//这是你要执行的过程
      end;如果还不行,你可以这样:
    procedure TForm1.YouClick(Sender :TObject);
    begin
      ...
      if Sender is TMemo then begin
         Showmessage( Memo[(Sender as TMemo).tag].text);
       end;
      ...
    end;for i:=0 to 9 do
      begin
        memo[i]:=tmemo.create(Application);
        memo[i].tag:=i;
        memo[i].Parent:=form1;
        memo1.onclick:=YouClick(Sender :TObject);//这是你要执行的过程
      end;
      

  6.   

    复制错了,memo1.onclick -> memo[i].onclick