我使用了spinedit1来对应调整Timer1.Interval的触发频率,但是spinedit1却没有text属性,请问应当取那个属性Timer1.Interval:=才能取到spinedit1变动的值,我要求完成的是按下button1,即完成一个过程,代码如此的写,不知是否对;
  procedure tform1.button1click(sender:tobject);
   begin
    过程....
  
  end;
  procedure tdatamodule1.ttimer1timer(sender:tobject)
   begin
    Timer1.Interval:=?
  这里应当是调用tform1.button1click(nil);但是不知怎样的写代码
  end;
    同时以上的写还是不通,因为没有触发tdatamodule1.ttimer1timer的事件发生,如果将tdatamodule1.ttimer1timer事件写入tform1.button1click中又成了死循环,困惑,不知那位高人能指点一二?!!!

解决方案 »

  1.   

    看不大懂楼主说的,下面的不知道是不是楼主想要的
    纠正一下spinedit1有text属性
    Timer1.Interval := SpinEdit1.Value;
    Form1.Button1Click(Form1.Button1);
      

  2.   

    后面的问题是用button按钮就可以触发timer1和ontime事件并执行相应的过程,这个过程是button触发的,这样的话怎样的作
      

  3.   

    请问是不是这样的写啊
    procedure tform1.button1click(sender:tobject);
       begin
      tdatamodule1.timer1.enable:=true;
        过程....
      
      end;
      procedure tdatamodule1.ttimer1timer(sender:tobject)
       begin
        Timer1.Interval:=spinedit1.values;
        end;
    这样的话即可以按spinedit1.values设定的时间间隔向外完成button的过程了,对不对,请那位高手确认一下,我不敢放入程序中,怕出错,改起来麻烦
      

  4.   

    用button按钮就可以触发timer1和ontime事件并执行相应的过程
    在button按钮OnClick中添加Form1.Button1Click(Form1.Button1);
      

  5.   

    楼主想要做什么呢?Button1是做什么用的?启动TTimer吗?procedure tdatamodule1.ttimer1timer(sender:tobject)
    begin
        Timer1.Interval:=spinedit1.values;
    end;这段代码有什么意思义吗?Timer1.Enable:=true;以后反复给Timer1.Interval赋同一个值?楼主是不是想这样?  procedure tform1.button1click(sender:tobject);
      begin
          //这里用启动timer1
          Timer1.Interval:=spinedit1.value;
          TImer1.Enable:=true;
      end;
      procedure tdatamodule1.ttimer1timer(sender:tobject)
      begin
          //代码...      
      end;
      

  6.   

    在timer定时器的使用中,是不是其enable属性为true时,就是开始timer的onclick过程,如果是这样的话,楼上的代码就是我想要的结果,不过我现在按楼上的方法试了一下,因为我是把timer组件放在datamodule中,而我的过程中有定义,dword参数和thandle句柄,我在uses下面加上了windows,messages,但是程序还是有问题,不能发送数据,但是代码是没有错的,因为这个代码在其它窗体中是没有问题的,关键应在uses部份,不知还要加入什么,datamodule下的uses
    SysUtils, Classes, ExtCtrls, DB, ADODB;我有加Windows, Messages两个
    而tform下的
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Buttons, ExtCtrls
    不知有那位专家能解答一下,是不是这个原因引起的
    整个代码我也附在后面,如下:
    unit winmindata;interfaceuses
      SysUtils, Classes, ExtCtrls, DB, ADODB,windows,messages;type
      Tmindatamodule = class(TDataModule)
        ADOConnection1: TADOConnection;
        ADODataSet1: TADODataSet;
        holidaydas: TADOQuery;
        timedas: TADOQuery;
        anocomm: TADOQuery;
        adolog: TADOQuery;
        holidays: TDataSource;
        times: TDataSource;
        commds: TDataSource;
        Timer1: TTimer;
        adoqyywpset: TADOQuery;
        adoqrycustlist: TADOQuery;
        adogroup: TADOQuery;
        adoreinfo: TADOQuery;
        adotgp: TADOQuery;
        ADOCommand1: TADOCommand;
        adosend_cache: TADOQuery;
        send_cache: TDataSource;
        procedure Timer1Timer(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      mindatamodule: Tmindatamodule;
      hsend:thandle;implementation
    uses
    wintest,mainpage;
    {$R *.dfm}procedure Tmindatamodule.Timer1Timer(Sender: TObject);
    var
    datasendednum,datasendingnum,datasendennum,errorflag:dword;
    pdatatowrite:pchar;
    write_os:toverlapped;
    begin
      datasendennum:=0;
      datasendingnum:=0;
      datasendednum:=testfrm.Edit1.GetTextLen+testfrm.Memo1.GetTextLen;
      if (datasendednum=0) then
       raise exception.Create('发送缓冲区为空');
       pdatatowrite:=pchar(testfrm.memo1.Text+testfrm.edit1.Text);
       fillchar(write_os,sizeof(write_os),'a');
       write_os.hEvent:=createevent(nil,true,false,nil);
       setcommmask(hsend,ev_txempty);
       repeat
        if not writefile(hsend,pdatatowrite[datasendingnum],datasendednum,datasendennum,@write_os) then
           begin
             errorflag:=getlasterror;
             if errorflag<>0 then
             begin
             if errorflag=error_io_pending then
              begin
              waitforsingleobject(write_os.hEvent,infinite);
              getoverlappedresult(hsend,write_os,datasendennum,false);
              end
              else
              begin
              raise exception.Create('发送数据失败');
              end;
              end;
              dec(datasendednum,datasendennum);
              inc(datasendingnum,datasendennum);
              until          (datasendednum<=0);
              testfrm.statusbar1.Panels[2]:='已发送:'+inttostr(datasendingnum)+'个字节的数据';end;
    end.
      

  7.   

    uses
      SysUtils, Classes, ExtCtrls, DB, ADODB,windows,messages;
    把windows,messages放到最前面试试,及
    uses
      Windows, Messages, SysUtils, Classes, ExtCtrls, DB, ADODB;
      

  8.   

    单步跟踪(step over)没有问题