给个思路你:(异常没考虑)<br>procedure CopyFromButton(OldButton,NewButton:TButton;Rect:TRect);<br>begin<br> NewButton:=TButton.Create(nil);<br> NewButton.SetBounds(Rect.Left,Rect.Top,rect.Right-rect.Left,rect.Bottom-rect.Top);<br> NewButton.Parent:=OldButton.Parent;<br> NewButton.OnClick:=form1.Button1Click;<br> NewButton.Caption:='New';<br> OldButton.Free;<br> NewButton.Show;<br>end;<br><br>procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word;<br> Shift: TShiftState);<br>var Button2:TButton;<br> Rect:TRect;<br>begin<br> Rect.Left:=10;<br> Rect.Right:=100;<br> Rect.Top:=10;<br> Rect.Bottom:=40;<br> if (Shift=[ssCtrl]) and (Key=$43) then<br> begin<br> showmessage('Ctrl C');<br> CopyFromButton(Button1,Button2,Rect);<br> end;<br>end;