本帖最后由 seleron 于 2012-06-11 11:12:37 编辑

解决方案 »

  1.   

    可以从RZHotKeyEdit的HotKey属性得到,这个属性值的类型是word
      

  2.   

    如何取得ctrl或alt或shift呢?HotKey是字母的ASCII码吧?根据HotKey只能取得组合快捷键中的字母啊。
      

  3.   

    RZHotKeyEdit是不能只设置成Ctrl键的RZHotKeyEdit的HotKey属性值的类型是Word型,比如说Ctrl+C就是16451,你设置HotKey = 16451的话,在RZHotKeyEdit显示的就是Ctrl+C
      

  4.   

    有什么规律么?如何根据HotKey的值计算出对应的快捷键呢?
      

  5.   

    1.不能单独的Ctrl/Shift/Alt键(不过可以做出这效果来,自己研究吧)2.既然想知道值与hotkey值转换,那就简单的解释一下,先看这三个组合键值定义(16进制):
    scShift = $2000;
    scCtrl = $4000;
    scAlt = $8000;
    这3个的值是2倍的关系,即10进制分别表示为8192,16384,32768
    加上键盘上的字母和数字(或其它符号键),自己查一下ASCII码吧
    比如A是65,就可以组合成hotkey值了,即8192+65=8257就是Shift+A反之任意给一个LongInt值,经过下面这个算法的运算,就得出它的hotkey值(比如16452,结果是Ctrl+D)
    这是源码,不知道楼主能否看的懂(一些与运算而已):
    procedure TCustomHotKey.ShortCutToHotKey(Value: TShortCut);
    begin
      FHotKey := Value and not (scShift + scCtrl + scAlt);
      FModifiers := [];
      if Value and scShift <> 0 then Include(FModifiers, hkShift);
      if Value and scCtrl <> 0 then Include(FModifiers, hkCtrl);
      if Value and scAlt <> 0 then Include(FModifiers, hkAlt);
    end;