屏蔽掉一些按钮,应该是Key:=#0;

解决方案 »

  1.   

    to cyberjohn:
    不对,在OnkeyPress中是key:=#0;在我这里OnKeyPress一切正常!在OnKeyDown Key这样定义的:var Key: Word;
    所以应该是Key:=0;或Key:=$0;可都不行????????有谁知道解决办法吗?
      

  2.   

        实际上光光用Key:=0或者Key:=#0之类的方法都不能将所有的按键的。
        请问你具体要将什么按键屏蔽掉呢?
      

  3.   

    这要看你相干什么?
    你知道 onkeypress, onkeydown, onkeyup的区别吗。
    你的目的是什么能告诉大家吗?
      

  4.   

    我用的是TDBEdit,在输入时我想屏蔽掉部分字符,或根据输入光标的位置,屏蔽,
    例如,在输入的前2位为自动输入的,我一般不允许用户修改,所以在字符位置<2时,我要屏蔽掉所有字符的输入。to laza:
    我当然知道onkeypress, onkeydown, onkeyup的区别!怎么做!我的TEdit控件在onkeypress可以屏蔽掉一些按键,TDBEdit则无论在onkeypress, onkeydown一个字符也不能屏蔽,当然包括数字和字符键了,TDBComboBox在onkeypress可以屏蔽掉字符和数字等,但在onkeydown中不干活。to linkie:
    还有什么办法能屏蔽按键?难道要编一个键盘hook,为了一个简单的问题?
    onkeydown应该能捕获所有键盘的扫描码的啊!!可怎么屏蔽,按理应该是Key:=0;啊?????
      

  5.   

    通常没有在onkeydown里做屏蔽键,在这里大都用来截获系统功能键!!
    控件 写 edit text 从 WM_char中得到键值, wm_char 在当WM_keydown被translate时发送,所以你干它也没用,到 这个消息处理过程中Onkeypress 做不行吗? TDBEdit 没问题!能用!
    TDBEdit 
      

  6.   

    惨了,多次试验才发现,确实在TDBEdit和TEdit中都有用,可.....在OnkeyDown里能截获系统功能件和字符键,屏蔽功能键也可以Key:=0;
    在OnkeyPress能截获ASCII键,也能屏蔽Key:=#0,鬼知道原来试的时候怎么不好用了,也许是和我在调试动态连接库时有关,同一个工程组中有两个工程,在平时是设Dll工程是Active工程,可出错有,系统自动将Active工程切换到测试工程。问个题外的问题,能不能将工程组中的Dll工程用就设成活动(因为我这里不管怎么设置,第一次打开时,总是测试工程是活动的)?另外,怎么在OnKeyDown中屏蔽ASCII键,因为有时候需要屏蔽系统键和ASCII键,我不能在两边都写代码,这样麻烦不说,程序很难维护???
      

  7.   

    to laza:
    什么意思???
      

  8.   

    简单,把FORM的KEYPREVIEW设为TRUE后,在ONKEYDOWN中把KEY设为0即可。
      

  9.   

    to Raptor:
    ??to laza:
    ??
      

  10.   

    用KEYPRESS比较好,
    if Key in [#39] then
    begin
      Key := #0;
      Message_Beep(MB_OK);
    end;
      

  11.   

    to strongzp:
    不是用哪个好的问题,我必须同时屏蔽控制键和ASCII键啊,必须用OnKeyDown啊。怎么做?
      

  12.   

    哎,这个问题也要讨论这么久?在KeyDown可以同时拦截控制键和ASCII键!只不过在Keydown/Up中ASCII的键值跟Keypress中的不一样罢了。例如A在KeyDown中为65,在KeyPress中为97,明白了这个就好办了!在KeyUp/Down中添加如下代码(假设屏蔽A & F1):
     if (key=65) or (key=VK_F1) then
        ................
      

  13.   

    to Kingron:
    你试过了吗????我直接直接在OnKeyDown中写:Key:=0;按理应该是屏蔽所有按钮,可...你试一试!!不知是不是d版的原因,在OnKeyDown能捕获所有键,可屏蔽不了??????
    用正版的朋友发个言!
      

  14.   

    可以试试TMaskEdit,通过设置EditMask属性能够解决问题。
    有现成的不用,咳!!
      

  15.   

    to e_cat:
    现成的不能满足要求啊!!!
      

  16.   

    to longs,highnice:
    不要光关注啊,你们用时是不是也这样!
      

  17.   

    hehe,的确不行!所以但是我就没有写Key:=0之内的代码,你可以采取一个折衷的办法:
    先保存Edit的内容,然后恢复。