if (Key = VK_left) and (Edit1.SelStart =1)  then
   begin
     keybd_event(VK_SHIFT,0,0,0);
     keybd_event(VK_TAB,0,0,0);  
     keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0);
     keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0); 
   end;
   if (Key=Vk_right) and (Edit1.SelStart := Length(Edit1.Text)) then
   begin
     //keybd_event(VK_SHIFT,0,0,0);
     keybd_event(VK_TAB,0,0,0);  
     keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0);
     //keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0); 
   end;

解决方案 »

  1.   

    有比较多的edit和combobox,能否用sender 方法来一次性解决?省得一个个写代码?
      

  2.   

    用tedit(sender)
      tcombobox(sender)
    来代替可以
    指定所有的EDIT的KEYDOWN事件指向第一个就可以了
      

  3.   

    if (Key = VK_left) and (TEdit(Sender).SelStart =1)  then
       begin
         keybd_event(VK_SHIFT,0,0,0);
         keybd_event(VK_TAB,0,0,0);  
         keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0);
         keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0); 
       end;
       if (Key=Vk_right) and (TEdit(Sender).SelStart := Length(TEdit(Sender).Text)) then
       begin
         //keybd_event(VK_SHIFT,0,0,0);
         keybd_event(VK_TAB,0,0,0);  
         keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0);
         //keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0); 
       end;