某窗口中有 edit1 、 edit2 、button1 。其中 button1 的 default 为ture ,我在 edit1 中输入"Hello",然后回车,那么 button1的click事件中要怎样写才能得到edit1中的值,加上一个"Msg" 一起 Showmessage出来呢?如果是在 edit2 中输入文字,再回车呢,两者有什么不同?

解决方案 »

  1.   

    var
      i_edit:integer;
      s_edit:string;
      //button1的CKICK事件中可能会用到
    procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if key='#13' then
      begin
        i_edit:=1;                 //来自EDIT1
        s_edit:=edit1.text;        //取EDIT1的内容
        button1click(application);
      end;
    end;
      

  2.   

    试试这个:
    Edit事件:
    procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
     if key=13 then Button1Click(Sender);
    end;
    Button1事件:
    procedure TForm1.Button1Click(Sender: TObject)
    var
      txt:string;
    begin
    if (Sender is TEdit) then
    begin
       txt:=(Sender AS Tedit).Text;
      showmessage('msg'+txt);
    end;
    end;
      

  3.   

    行吗?我只想知道只从哪个edit出来再到 button1 的,用他们的 tag 可以吗?
      

  4.   

    窗体中声明一变量:
       ActiveEdt:TEdit;procedure TForm1.Edit1Enter(Sender:TObject);
    begin
       ActiveEdt:=Edit1;
    end;procedure TForm1.Edit2Enter(Sender:TObject);
    begin
       ActiveEdt:=Edit2;
    end;
    proceure TForm1.Button1Click(sender:TObject);
    begin
       ShowMessage(IntToStr(ActiveEdt.tag));//取得ActiveEdt的tag属性或作其他用途
    end;
    end;
      

  5.   

    自己解决:
    1.取消 button 的default
    2.设置两个 edit 的tag 为不同值。
    3.设置 edit 的 OnkeyDown 同上。
    4.btn1click:var
    str:string;
    begin
    case Tedit(Sender).tag of
    0:str:='0';
    1:str:='1';
    3:str:='3';
    end;
    showmessage(str);
    end;仍然谢谢大家。分会给出.