如何做像瑞星一样的的序列号输入框,如“放四个edit“。。。。。如:在窗体上放上四个edit框,复制如“4A7I9W-92HTIF-R8UWSM-FK5200”

  • 主题发起人 主题发起人 文生
  • 开始时间 开始时间

文生

Unregistered / Unconfirmed
GUEST, unregistred user!
如何做像瑞星一样的的序列号输入框,如“放四个edit“。。。。。如:在窗体上放上四个edit框,复制如“4A7I9W-92HTIF-R8UWSM-FK5200”的序列号,程序运行后,在“edit1”里面点右键“粘贴”后,序列号“4A7I9W-92HTIF-R8UWSM-FK5200”会自动填充完四个 ( 积分: 20 )<br />如何做像瑞星一样的的序列号输入框,如“放四个edit“。。。。。

如:在窗体上放上四个edit框,复制如“4A7I9W-92HTIF-R8UWSM-FK5200”的序列号,程序运行后,在“edit1”里面点右键“粘贴”后,序列号“4A7I9W-92HTIF-R8UWSM-FK5200”会自动填充完四个edit框。
 
如何做像瑞星一样的的序列号输入框,如“放四个edit“。。。。。

如:在窗体上放上四个edit框,复制如“4A7I9W-92HTIF-R8UWSM-FK5200”的序列号,程序运行后,在“edit1”里面点右键“粘贴”后,序列号“4A7I9W-92HTIF-R8UWSM-FK5200”会自动填充完四个edit框。
 
在EDIT1的OnChange事件中加入:
截取字符串的算法.
Copy(字符串,起始位,长度)
 
能具体一点吗?字符串是从剪贴板中获的的
 
OnChange里改
 
怎么没有人会吗?郁闷
 
procedure TForm1.Edit1Change(Sender: TObject);
var
str:string;
i,j:integer;
begin
//4A7I9W-92HTIF-R8UWSM-FK5200”的序列号
str:=edit1.Text;
i:=0;
while pos('-',str)&gt;0 do
begin
j:=pos('-',str);
delete(str,1,j);
i:=i+1;
end;
str:=edit1.Text;
if i=3 then
begin
edit1.Text:=copy(str,1,pos('-',str)-1);
delete(str,1,pos('-',str));
edit2.Text:=copy(str,1,pos('-',str)-1);
delete(str,1,pos('-',str));
edit3.Text:=copy(str,1,pos('-',str)-1);
delete(str,1,pos('-',str));
edit4.Text:=str;
end;

end;
 
原理已经很清楚了
procedure TForm1.Button1Click(Sender: TObject);
var
TmpStr, s1, s2, s3, s4: string;
begin
TmpStr := '4A7I9W-92HTIF-R8UWSM-FK5200';
s1 := Copy(TmpStr, 1, Pos('-',TmpStr)-1);
TmpStr := Copy(TmpStr,Pos('-',TmpStr)+1,Length(TmpStr)-Pos('-',TmpStr));
s2 := Copy(TmpStr, 1, Pos('-',TmpStr)-1);
TmpStr := Copy(TmpStr,Pos('-',TmpStr)+1,Length(TmpStr)-Pos('-',TmpStr));
s3 := Copy(TmpStr, 1, Pos('-',TmpStr)-1);
s4 := Copy(TmpStr,Pos('-',TmpStr)+1,Length(TmpStr)-Pos('-',TmpStr));
showMessage(s1);
showMessage(s2);
showMessage(s3);
showMessage(s4);
end;
//方法就是这个样子写个函数得到字符串分解再往Edit填就可以了撒
 
uses Clipbrd;

type
TMyEdit=class(TEdit)
private
procedure WMPaste(var Message:TMessage);message WM_PASTE;
end;

procedure TMyEdit.WMPaste(var Message: TMessage);
var
Buf:string;
begin
SetLength(Buf,100);
Clipboard.GetTextBuf(PChar(Buf),100);
//取出剪贴板中的字符串,具体分解就看你自己了。
end;
 
private
procedure wmpaste();
end
------------------------------------
procedure wmpaste()
var
gettedcode,buff,first,secode,three,four:string;
begin
setlength(buff,100)
gettedcode:=clipboard.gettextbuf(pchar(buff),100)
first:=copy(gettedcode,1,pos('-',gettedcode)-1)
gettedcode:=copy(gettedcode,pos('-',gettedcode)+1,length(gettedcode)-pos('-',gettedcode))
.............
eidt1.text:=first
edit2.text:=secode
.....
edit4.text:=four

end;
 
多人接受答案了。
 
后退
顶部