//注入宿主程序,获取DBGrid实例
DBGrid := TDBGrid(FindControl(CurrentThreadId,ListHandle));
DataSet:= DBGrid.DataSource.DataSet; if DataSet.RecordCount = 0 then
begin sm:= split(s.Strings[1],'<m>');
for I:=0 to sm.Count -1 do
begin case I of
0: begin
DataSet.Append;
sleep(10);
SendMessage(ListHandle,WM_SETFOCUS,0,0);
sleep(10);
SendMessage(ListHandle,WM_KEYDOWN,VK_DOWN,0);//DBGrid 向下键增加一条记录
sleep(10);
end;
1: begin
DataSet.Append;
sleep(10);
SendMessage(ListHandle,WM_SETFOCUS,0,0);
sleep(10);
SendMessage(ListHandle,WM_KEYDOWN,VK_DOWN,0);
sleep(10);
end;
else begin
SendMessage(ListHandle,WM_SETFOCUS,0,0);
sleep(10);
SendMessage(ListHandle,WM_KEYDOWN,VK_DOWN,0);
sleep(10);
end; end; DataSet.Edit;
SendMessage(ListHandle,WM_SETFOCUS,0,0);
DataSet.FieldByName('名称').AsString:= smf.Strings[0];
PostMessage(ListHandle,WM_CHAR,13,0);
sleep(50);
SendMessage(ListHandle,WM_SETFOCUS,0,0);
DataSet.FieldByName('数量').AsString:='1';
PostMessage(ListHandle,WM_CHAR,13,0);
sleep(50);
SendMessage(ListHandle,WM_SETFOCUS,0,0);
DataSet.FieldByName('单价').AsString:= smf.Strings[1];
PostMessage(ListHandle,WM_CHAR,13,0);
sleep(50);
end;因为宿主程序,加入一个名称后,要调出一些内容,加入单价和数量后,也要计算,我只能简单的把数据赋值,计算还是给宿主程序来做,
程序做出来了,就是不稳定,时好是坏,有的时候,宿主崩溃,看看那有写错。
DBGrid := TDBGrid(FindControl(CurrentThreadId,ListHandle));
DataSet:= DBGrid.DataSource.DataSet; if DataSet.RecordCount = 0 then
begin sm:= split(s.Strings[1],'<m>');
for I:=0 to sm.Count -1 do
begin case I of
0: begin
DataSet.Append;
sleep(10);
SendMessage(ListHandle,WM_SETFOCUS,0,0);
sleep(10);
SendMessage(ListHandle,WM_KEYDOWN,VK_DOWN,0);//DBGrid 向下键增加一条记录
sleep(10);
end;
1: begin
DataSet.Append;
sleep(10);
SendMessage(ListHandle,WM_SETFOCUS,0,0);
sleep(10);
SendMessage(ListHandle,WM_KEYDOWN,VK_DOWN,0);
sleep(10);
end;
else begin
SendMessage(ListHandle,WM_SETFOCUS,0,0);
sleep(10);
SendMessage(ListHandle,WM_KEYDOWN,VK_DOWN,0);
sleep(10);
end; end; DataSet.Edit;
SendMessage(ListHandle,WM_SETFOCUS,0,0);
DataSet.FieldByName('名称').AsString:= smf.Strings[0];
PostMessage(ListHandle,WM_CHAR,13,0);
sleep(50);
SendMessage(ListHandle,WM_SETFOCUS,0,0);
DataSet.FieldByName('数量').AsString:='1';
PostMessage(ListHandle,WM_CHAR,13,0);
sleep(50);
SendMessage(ListHandle,WM_SETFOCUS,0,0);
DataSet.FieldByName('单价').AsString:= smf.Strings[1];
PostMessage(ListHandle,WM_CHAR,13,0);
sleep(50);
end;因为宿主程序,加入一个名称后,要调出一些内容,加入单价和数量后,也要计算,我只能简单的把数据赋值,计算还是给宿主程序来做,
程序做出来了,就是不稳定,时好是坏,有的时候,宿主崩溃,看看那有写错。
解决方案 »
- 如何编写一个无界面的Activex控件
- 问一个简单的问题
- Delphi上如何得到一个字符的ASCII码?
- 我在此询问————怎么给别人应该得到的分————???在线等待!!
- TTimer有没有重置计数器的方法?
- 如何在Where子句中进行日期计算(Access数据库,非SQLServer)
- 关于NMFTP控件的问题!
- 有没有南京的朋友,有无收到邀请函,4.3到金陵饭店去听李维的Webservices讲座去!
- 请教?Tquery中修改完的记录为什么不能在TDBgrid中及时更新!
- 寻找help & manual的最新版
- delphiX错误 external exception C000001D?
- 为什么我在线程里使用GetWindow跟在主线程里使用时得出的结果不一样呢?
但你已经又开始SendMessage下一消息过去了,错误真的不可预料
若出现程序崩溃,地址错误。很可能是钩子写得有问题。
DataSet.DisableControls;
DataSet.EnableControls;
宿主程序就不计算了,数据一定不全,我也没宿主程序得源代码。
DataSet.FieldByName('名称').AsString:= '';
DataSet.FieldByName('名称').Value:= '';
DataSet.FieldByName('名称').Text:= '';
DBGrid.Fields[0]).AsString:= '';
一共六种赋值方式。
用哪个好?