我有个edit,我想让他自动产生数据为SP+日期+0001的数据,形如SG-2006-02-18-0001,点击button1后产生了,SG-2006-02-18-0002,再点一下产生SG-2006-02-18-0003,要怎样才能得到这些自动加1的数据?这点不明白,请教各位大虾!

解决方案 »

  1.   

    Label1.Caption:=Copy(Edit1.Text,1,Length(Edit1.Text)-4)+Format('%.4d',[StrToInt(Copy(Edit1.Text,Length(Edit1.Text)-3,4))+1]);
      

  2.   

    uses StrUtils;procedure TForm1.Button1Click(Sender: TObject);
    var s1,s2:string;
    begin
      s1:=LeftStr(Edit1.Text,length(Edit1.Text)-4);
      s2:=RightStr(Edit1.Text,4);
      Edit1.Text:=s1+Format('%.4d',[StrToInt(s2)+1]);
    end;
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: integer;
    function MyFormat(i: integer): string;
    begin
      if i<0 then
        Result := '0000'
      else if i<10 then
        Result := '000' + IntToStr(i)
      else if i<100 then
        Result := '00' + IntToStr(i)
      else if i<1000 then
        Result := '0' + IntToStr(i)
      else if i<10000 then
        Result := IntToStr(i)
      else
        Result := '9999';
    end;
    begin
      i := StrToInt(Copy(Edit1.Text, Length(Edit1.Text)-3, 4))+1;
      Edit1.Text := Copy(Edit1.Text, 1, Length(Edit1.Text)-4) + MyFormat(i);
    end;
      

  4.   

    To gzmhero(hihihi) ( ) :编译时产生如下错误信息:
      Project project1.exe raised exception class EConvertError with message ''' is not a valid integer value'.Process stopped.To liangqingzhi(老之) :编译时说不认识leftstr和rightstr.
      

  5.   

    To cuteant(我的这张旧船票是否还能登上你的客船|涛声是否依旧) :编译时产生如下错误信息:
      Project project1.exe raised exception class EConvertError with message ''' is not a valid integer value'.Process stopped.
      

  6.   

    To liangqingzhi(老之) :编译时说不认识leftstr和rightstr.
    ====
    在开头加 uses StrUtils;
      

  7.   

    To liangqingzhi(老之) ( ):加了后编译还是出现如下错误信息:
      Project project1.exe raised exception class EConvertError with message ''' is not a valid integer value'.Process stopped.
      

  8.   

    Edit里有没有输入SG-2006-02-18-0001这样的字符串?
      

  9.   

    To liangqingzhi(老之) ( ) :那是18号的,我想生成当天的日期,比如今天是21号,那么会动态产生SG-2006-02-21-0001,然后点击则生成SG-2006-02-21-0001,再点击生成SG-2006-02-21-0002。我的目的是想动态生成“SG-当天日期-自动加1”的格式。
      

  10.   

    我改了一下,产生的结果是0001,前半部份没了。
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Str : string;
    begin
      Str := Copy(edit1.Text, Length(edit1.Text) -3, 4);
      Str := Format('%.4d', [StrToIntDef(Str, 0) + 1]);
      Str := Copy(edit1.Text, 1, Length(edit1.Text) -4) + Str;
      edit1.Text := Str;
      ShowMessage(Str);
    end;
      

  11.   

    if Edit1.Text='' then
        Eidt1.Text:='SG-'+FormatDateTime('yyyy-mm-dd',now)+'-0001'
    else
        Edit1.Text:=Copy(Edit1.Text,1,Length(Edit1.Text)-4)+Format('%.4d',[StrToInt(Copy(Edit1.Text,Length(Edit1.Text)-3,4))+1]);
      

  12.   

    一个全局Integer变量n,初始为0
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Inc(n);
      Edit1.Text := 'SG-' + FormatDateTime('yyyy-mm-dd-', Date) + FormatFloat('0000', n);
    end;