Автор: "Shejchenko Andrij" <andrij@dep01.niiit.kiev.ua>
Я использую следующую процедуру. Вызывайте ее при нажатии на соответвующих пунктах меню. Это будет работать со всеми "редактируемыми" элементами управления. Но для деревьев вы должны использовать специальные сообщения редактирования.
procedure TMainForm.EditUndo(Sender: TObject); var Mes:TWMUndo; begin Mes.Msg:=WM_UNDO;Screen.ActiveControl.Dispatch(Mes);end; procedure TMainForm.EditCut(Sender: TObject); var Mes:TWMCut; begin Mes.Msg:=WM_CUT;Screen.ActiveControl.Dispatch(Mes);end; procedure TMainForm.EditCopy(Sender: TObject); var Mes:TWMCopy; begin Mes.Msg:=WM_COPY;Screen.ActiveControl.Dispatch(Mes);end; procedure TMainForm.EditPaste(Sender: TObject); var Mes:TWMPaste; begin Mes.Msg:=WM_PASTE;Screen.ActiveControl.Dispatch(Mes);end; |
|
ActiveControl.Perform( WM_COPY, 0, 0 ); |
для CopyToClipboard и:
ActiveControl.Perform( WM_PASTE, 0, 0 ); |
для PasteFromClipboard.
Если элемент управления "не понимает" посланных сообщений, то это никак не скажется на его работе, он просто проигнорирует их.
Другим способом является проверка типа во время выполнения приложения:
If ActiveControl Is TCustomEdit ThenTCustomEdit(ActiveControl).CopyToClipboard; |
- Peter Below [000851]