我的EDIT是动态生成的个数不定,而且很多,但我想在每一个EDIT上都产生一个事件并执行相应的函数,如判断在上面按下一个字符键就后,就调用相应的函数产生不同的输出!
请问如何实现啊!谢谢

解决方案 »

  1.   

    你是怎么动态创建的,如果用数组,应该可以得到数组每一个元素的keypress、keydown事件的
      

  2.   

    你是不是指如何为动态生成的控件加入事件,我写了个例子,如下:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      ss:Tedit;
    begin
      ss:=Tedit.Create(self);
      ss.parent := form1;
      ss.OnKeyDown:=ssKeyDown;
      ss.Show;
    end;procedure TForm1.ssKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      shomwssage(inttostr(key));
    end;
      

  3.   

    非常感谢dickeybird888(于伟刚)个其他朋友,但我还有个问题,因为我是把动态EDIT存入了数组中的,但是我还想在按下按键是,能确认是哪个按键,即能把EditArray[i]的i能传下去,请问该怎么办呢?谢谢
      

  4.   

    var
      EdtArray : Array of TEdit;procedure MyEditKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      ShowMessage('当前操作的Edit是:'+(Sender as TEdit).Name);
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      vEdit:TEdit;
    begin
      SetLength(EdtArray,N);  //N为长度
      for I:=0 to N-1 do 
      begin
        vEdit:=Tedit.Create(Self);
        with vEdit do 
        begin
          Tag:=I;  //通过Tag属性判断当前操作的是哪个Edit
          Name:='Edit'+IntToStr(I)
          Parent := Self;
          OnKeyDown:=MyEditKeyDown;
        end;
        EdtArray[I]:=vEdit;
      end;
    end;