请问怎样才可以将程式A的Edit框里面的内容发到程式B的EDIT框里面(注:B里有很多EDIT,我只想发送到EDIT1) ;还有,假如我不知道B的EDIT名称,请问我怎样才可以知道B的EDIT框的名称? 还有,A程式怎能样才可以获取程式B的DBGRID的内容? 请大家帮帮忙,谢谢!
解决方案 »
- 现在的delphi 7。0 已经装上了rave reports 5.1怎么恢复成rave reports 5.0
- 是不是因为DELPHI版本问题?还是具体的东西变了?
- folder80 ,lai ba
- 关于复合查询的问题
- 求一个用Webconnection连接远程数据库的三层开发例子,急!200分送
- 如何获取DBGrid的列宽度变化事件?
- 有没有透明的TRACKBAR控件,也就是第三方控件。
- delphi 高手请进来吧,这里有人请教您
- DateTimePicker的日期格式在win98下怎么成02-5-5?
- 谁知道哪里有免费的Zip格式的压缩控件!
- delphi如何实现按一个按键就直接打开一个网页
- 菜鸟问题:为什么线程只能执行一次?
在你程序运行时,你先用鼠标点击一下该EDIT,然后得到该句柄,然后将文字发送过去?如果你不想这么做,那你可以遍历所有EDIT,然后得到你想操作的EDIT排行是多少,然后每次你都遍历EDIT,然后获取排行例如是3的EDIT的句柄,然后发送文字!
//程序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;
我知道你的意思,窗体上有很多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;