我想做个论坛转贴器,用DELPHI来做,其中要对网页中的各个控件进行赋值,赋值代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var myitem: Olevariant;
i:integer;
begin
myitem := WebBrowser1.Document; myitem.all.subject.value:=edit1.text; //用edit1的内容填充标题
 myitem.all.message.value:=memo1.text; //用memo1的内容填充多行文本框//myitem.all.topicsubmit.click;end;注明:subject是标题控件的名称,message是多行文本textarea类型的文本输入框,就是下图的那个“所见即所得模式”框,其图片如下:
http://www.jngzh.cn/ad/csdn.jpg
运行之后发现,很奇怪:myitem.all.subject.value:=edit1.text;这句代码每次都能赋新值,而myitem.all.message.value:=memo1.text;却不起作用,任你怎么弄,都没有办法让它显示memo1中的内容。先说明,这句代码没有语法错误的,那个“message”名称也没有错,大家不用怀疑是我写错了名称显不出来。百思不得其解,于是上网查找,发现其中的多行文本message框是textarea类型,而textarea这个又是autosave类型,它能自动保存,它不是一般的文本输入框的,我见有网友也在说textarea不懂如何清空第一次赋值的内容,我试用了一下以下这句清空代码:
myitem.all.message.value:=null;结果发现也不起作用。搞了两天都没有搞定,特来找答案,望大侠们帮帮忙了!

解决方案 »

  1.   

    textarea 有点类似
    memo
    和richEdit
    你用line.add()试试
      

  2.   

    我测试过都可以正常赋值显示的啊!我认为text和textarea没什么区别,你先在本地用最简单的静态页面(文本框+textarea)测试一下吧!肯定是可以赋值的。感觉是不是你的超文本编辑器不允许赋值呢?
    我也拿一个ubb编辑器测试过是可以赋值的,不知和你的有什么区别...
      

  3.   

    继续测试,发现在普通模式下可以赋值,在所见即所得模式不能直接赋值,但可以用下面的方法达到你的需求:
    1、赋值前调用页面中的switchEditor(0)函数进入普通模式
    2、赋值
    3、调用switchEditor(1)函数返回所见即所得模式下面是我的测试代码,希望对你有用:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      myitem: Olevariant;
      script: Variant;
    begin
      myitem := WebBrowser1.Document;
      script := myitem.Script;
      myitem.all.subject.value := Edit1.Text;
      script.switchEditor(0);
      myitem.all.message.value := memo1.Text;
      script.switchEditor(1);
    end;
      

  4.   

    太感谢brucelei007了,你真是我的救星啊,太好了,马上结贴了!!!!
      

  5.   

    呵呵,不客气,delphi我一直很喜欢,但不是专业的,就是比较喜欢琢磨一些东西。