怎么实现这样一个小程序,按下键盘上1键,出现1001,接着按1出现1002,再接着按1,出现1003.。,同理第一次按2键出现,2001,接着按2,出现2002。按3,4,5,6,7,8,9都是同样的道理!

解决方案 »

  1.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    var
      iTmp: Integer;
    begin
      if not(key  in ['1'..'9']) then
      begin
        key := #0;
        Exit;
      end;  iTmp := StrToIntDef(TEdit(sender).Text,0);  if StrToInt(Key) = (iTmp div 1000)  then
         TEdit(sender).Text := IntToStr(iTmp+1)
      else
         TEdit(sender).Text := IntToStr(strtoint(key)*1000+1);
      Key := #0;
      TEdit(sender).SelStart := Length( TEdit(sender).text);
    end;
    有个BUG就是,比如输入1 然后到了1999再住上就会到1001.你自己 处理下吧。
      

  2.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); 
    var  iTmp,i,Len,sum: Integer;
         myinfile:TIniFile;
         file_path:string;begin
      file_path:=extractfilepath(application.ExeName)+'setup.ini';
      if not FileExists(file_path) then
        begin
         myinfile:=TIniFile.Create(file_path);
         myinfile.WriteInteger('长度设置','长度',4);
        //ForceDirectories(Edit1.Text);   创建目录
        end;
       myinfile:=TIniFile.Create(file_path);
       Len:=myinfile.readinteger('长度设置','长度',4);
       sum:=1;
       for i:=1 to Len-1 do
       begin
        sum:=sum*10
       end;
    if not(key  in ['1'..'9']) then
    begin    key := #0;   
      Exit;
    end;
    iTmp := StrToIntDef(TEdit(sender).Text,0);
    if StrToInt(Key) = (iTmp div sum)  then
     TEdit(sender).Text := IntToStr(iTmp+1)
     else
     TEdit(sender).Text := IntToStr(strtoint(key)*sum+1);
     Key := #0;
    TEdit(sender).SelStart := Length( TEdit(sender).text); 
    end;
    end.这是一个医院登记叫号要求实现的功能,那个号的长度由配置文件自己配置,根据3楼的代码,我基本上实现了想要的功能非常感谢3楼对我这个delphi新手的帮助!