本帖最后由 zhuimeng321 于 2010-08-27 08:33:50 编辑

解决方案 »

  1.   

    1、粘贴的消息是WM_PASTE,把这个拦截掉
    2、数字字母的判断应该不难,ASCII码比较或枚举比较
      

  2.   

    不知道为什么判断字母或数字那块不执行
    function isnumber(s:String):boolean;
    var i:integer;
    begin
    result:=true;
    s:=trim(s);
    for i:=1 to  length(s) do
    begin
    if  not(s[i] in['0'..'9']) then
     break;
    end;
    result:=false;
    end;
    function ischar(s:string):boolean;
    var i:integer;
    begin
    result:=true;
    s:=trim(s);
    for i:=1 to length(s) do
    begin
    if  not(s[i] in ['a'..'z','A'..'Z']) then
    break;
    end;
     result:=false;
    end;procedure TForm4.Button1Click(Sender: TObject);
    var sqlstr:string;
    begin
    if edit1.text='' then
    begin
    showmessage('密码错误');
    edit1.SetFocus;
    exit;
    end;
    if (edit2.text='') or (edit3.text='') then
    begin
    showmessage('密码不能为空');
    edit2.SetFocus;
    exit;
    end;
    if length(trim(edit2.text))<6 then
    begin
    showmessage('密码不能少于6位');
    edit2.SetFocus;
    exit;
    end;
    if edit2.text<>edit3.text then
    begin
    showmessage('两次输入的密码不一致');
    edit2.SetFocus;
    exit;
    end;
    if (isnumber(edit2.text)=true) or (ischar(edit2.text)=true) then
    begin
    showmessage('不能全是数字或字母');
    edit2.setfocus;
    exit;
    end;
      

  3.   

    能帮我解析一下下面的代码吗?谢谢
    procedure tform4.EditWndProc(var message : tmessage);
    begin
    if (message.Msg=wm_cut) or (message.Msg=wm_copy) or (message.Msg=wm_paste) then
    exit;
    oldwndproc(message);
    end;
    procedure TForm4.FormCreate(Sender: TObject);
    begin
    oldwndproc:=edit2.WindowProc;
    edit2.WindowProc:=EditWndProc;
    end;procedure TForm4.FormDestroy(Sender: TObject);
    begin
    edit2.WindowProc:=oldwndproc;
    end;
      

  4.   

    上面这段代码是用来过滤EDIT的复制、粘贴、剪贴消息的。
    采用的是窗口函数替换的方法实现的
      

  5.   

    第一个干脆禁用edit的弹出菜单,方法:
    添加一个Popmenu,Edit的弹出菜单指定为这个Popmenu,在Popmenu的OnPop事件中写上Abort;