起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 136|回复: 7

【搞定】[请求] 我想给弹出窗体的一个控件赋值**

[复制链接]
发表于 2007-6-11 10:11:51 | 显示全部楼层 |阅读模式
代码如下,编译通过了,值却没有赋过去,为什么?

var
   lForm : TSPLR;
procedure TMainForm.Button3Click(Sender: TObject);
begin
lForm := TSPLR.Create(self.Context);
try
        if lForm.ShowModal=Business.Forms.Controls.mrOK then
        begin
//           DataSetDWXXSJJ.Edit;
//           DataSetDWXXSJJ.FieldByName['GHDW'].AsString := lForm.Edit1.Text;
        end;

Finally
        lForm.Free;
end;
        DataSetBroker2.DataSet.Edit;
        lForm.Edit_SPBH.Text :='asdasdasd';
end;
回复

使用道具 举报

发表于 2007-6-11 11:00:00 | 显示全部楼层
代码如下,编译通过了,值却没有赋过去,为什么?
编译过,那只能说明语法没有错误,没法保证运行的结果是正确。例如逻辑是否出错,调试运行代码是否报错都有关

那请问,你运行报错了吗?你运行 lForm.Free; ,理解这句代码的含义了吗?这句是说释放lform 这个对象,那怎么还能访问到lform上 的 Edit_SPBH  这个控件呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-11 11:40:28 | 显示全部楼层
我原来是这样写的,运行的时候值也没有赋过去,我加了两条显示消息的代码,aaaaaaaaaa显示了,bbbbbbbbbb没有显示,我才试着把代码写到aaaaaaaaa那里的,结果也是不行

var
   lForm : TSPLR;

procedure TMainForm.Button3Click(Sender: TObject);

begin
lForm := TSPLR.Create(self.Context);

try
        if lForm.ShowModal=Business.Forms.Controls.mrOK then

        begin
        Business.Forms.Dialogs.ShowMessage('bbbbbbbbbbb');
        DataSetBroker2.DataSet.Edit;
             lForm.Edit_SPBH.Text :='asdasdasd';
        end;
Finally
        lForm.Free;
end;
        Business.Forms.Dialogs.ShowMessage('aaaaaaaaaa');
end;
回复 支持 反对

使用道具 举报

发表于 2007-6-11 13:19:39 | 显示全部楼层
var
  lct1: TCT1;
begin
  lct1 := TCT1.Create(context);
  try
    lct1.Edit2.Text := '111111111111';
    if lct1.ShowModal = Business.Forms.Controls.mrOK then
    begin
      lct1.Edit2.Text :='asdasdasd';
      Business.Forms.Dialogs.ShowMessage(lct1.Edit2.Text);
    end;
  Finally
    lct1.Free;
  end;
------------------------------------------------------------------
试试看是否这样就可以。另外
if lct1.ShowModal = Business.Forms.Controls.mrOK then
这个条件的地方需要在lct1窗体中用事件来触发的。比如在lct1窗体中用如下代码:
procedure TCT1.mrOKClick(Sender: TObject);
begin
  ModalResult := Business.Forms.Controls.mrOK;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-11 13:58:45 | 显示全部楼层
谢谢楼上的

但是'111111111111'赋过去了
'asdasdasd'却没有被赋过去

这是为什么呢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-11 14:09:45 | 显示全部楼层
if lct1.ShowModal = Business.Forms.Controls.mrOK then
    begin
      lct1.Edit2.Text :='asdasdasd';
      Business.Forms.Dialogs.ShowMessage(lct1.Edit2.Text);
    end;

是因为没有事件触发,
所以两个语句都没有执行吗?
回复 支持 反对

使用道具 举报

发表于 2007-6-11 14:25:23 | 显示全部楼层
是的
看4楼
下面不是给出一个例子,要在显示的窗体里做触发么!!
否则条件不成立,怎么可能会执行呢?
你可以在lct1里放个button,然后button事件就用4楼的最后那段,然后再看看效果。
(这样肯定能赋过去,不过不可见了,所以用showmessage)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-11 15:44:59 | 显示全部楼层
谢谢,结帖吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-11 14:58 , Processed in 0.040364 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表