请问怎样才可以将程式A的Edit框里面的内容发到程式B的EDIT框里面(注:B里有很多EDIT,我只想发送到EDIT1) ;还有,假如我不知道B的EDIT名称,请问我怎样才可以知道B的EDIT框的名称?  还有,A程式怎能样才可以获取程式B的DBGRID的内容?  请大家帮帮忙,谢谢!

解决方案 »

  1.   

    可以用sendmessage函数发送wm_settext,不过要先取得要发送的文本框句柄,
      

  2.   

    你是不是可以这么做?
    在你程序运行时,你先用鼠标点击一下该EDIT,然后得到该句柄,然后将文字发送过去?如果你不想这么做,那你可以遍历所有EDIT,然后得到你想操作的EDIT排行是多少,然后每次你都遍历EDIT,然后获取排行例如是3的EDIT的句柄,然后发送文字!
      

  3.   

    http://expert.csdn.net/Expert/topic/2143/2143564.xml?temp=.89417671.
    //程序H向程序A发送数据
    //数据内容为Edit1的文本内容
    //程序A的窗体名字为FromA
    procedure TFormH.Button1Click(Sender: TObject);
    var
      DataStruct: TCopyDataStruct;
      h: THandle;
    begin
      DataStruct.cbData := Length (Edit1.Text) + 1;
      GetMem (DataStruct.lpData, DataStruct.cbData ); 
      StrCopy (DataStruct.lpData, PChar (Edit1.Text));
      h:= FindWindow (nil, 'FormA'); 
      if h <> 0 then
        SendMessage (h, WM_COPYDATA, Handle,Cardinal(@DataStruct))
      FreeMem (DataStruct.lpData);
    end;
    2.
    //程序A接受来自程序H的数据,并显示在Edit1上
    ...
    type
      TFormA = class(TForm)
      ...
      public
        procedure ReceiveData(var Data:TWmCopyData);Message WM_COPYDATA;
    ...procedure TFormA.ReceiveDta(var Data:TWmCopyData);
    begin
      Edit1.Text:=StrPas(Data.CopyDataStruct^.lpData);
    end;
      

  4.   

    没有人回答呀?那我就说说吧:)
    我知道你的意思,窗体上有很多EDIT,但是EDIT都是一个类的,并且还没有内容可以区别,那怎么办呢?你知道,虽然他们都是TEDIT类,但是如果遍历他们,他们总有先后顺序的,比如说,我要操作其中一个EDIT,我们遍历EDIT时,发现他总是排行第5,或者其他位置,但是无论怎样,每次遍历时他的排行都一定,那么我们就能解决问题了。下面是代码,我尽量写详细!
    首先建个新工程和一个新窗体,然后放一个按钮,然后放3个EDIT。然后将EDIT中的内容全清除,然后写代码!...
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      KK:longint;
    implementation
    {$R *.dfm}
    function GetAllWinProc(Hwnd:longint;Lparam:longint):Boolean;stdcall;
      var WinTxt:Pchar;
    begin
      GetMem(WinTxt,255);
      GetClassName(Hwnd,WinTxt,255);
      if WinTxt = 'TEdit' then
        begin
          KK := KK+1;      Form1.ListBox1.Items.Add(IntToStr(Hwnd) + WinTxt);
          if KK = 2 then
          SetWindowText(Hwnd,'OK');
        end;
      Result := True;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      KK:=0;
      EnumChildWindows(Form1.Handle,Pointer(@GetAllWinProc),0);//如果操作别的进程
    //那么将Form1.Handle换成你要操作的主窗口的句柄,注意,如果他的EDIT放在PANEL上,你就要将Form1.Handle改为PANEL的HANDLE,总之要是EDIT的PARENT的HANDLE。
    运行上面的代码,你发现程序总将其中一个固定的EDIT内容设置为OK了!这样行了吧?
    end;
      

  5.   

    获取EDIT的内容用GETWINDOWTEXT,设置用SETWINDOWTEXT就可以了!上面我先的例子里使用过,自己看吧!别忘记给分:)