|
||||
|
Операционная системаБуфер обменаПросмотр буфера обменаПример на основе простого модуля-класса, осуществляющего просмотр буфера обмена. unit ClipboardViewer; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(tform) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private FNextViewerHandle : THandle; procedure WMDrawClipboard(var message: TMessage); message WM_DRAWCLIPBOARD; procedure WMChangeCBCHain(var message: TMessage); message WM_CHANGECBCHAIN; public end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin // Проверяем работоспособность функции. // При невозможности просмотра буфера обмена // функция возвратит значение Nil. FNextViewerHandle:= SetClipboardViewer(Handle); end; procedure TForm1.FormDestroy(Sender: TObject); begin // Восстанавливаем цепочки. ChangeClipboardChain(Handle, FNextViewerHandle); end; procedure TForm1.WMDrawClipboard(var message: TMessage); begin // Вызывается при любом изменении содержимого буфера обмена message.Result := SendMessage(WM_DRAWCLIPBOARD, FNextViewerHandle, 0, 0); end; procedure TForm1.WMChangeCBCHain(var message: TMessage); begin // Вызывается при любом изменении цепочек буфера обмена. if message.wParam = FNextViewerHandle then begin // Удаляем следующую цепочку просмотра. Корректируем внутреннюю переменную. FNextViewerHandle:= message.lParam; // Возвращаем 0 чтобы указать, что сообщение было обработано message.Result:= 0; end else begin // Передаем сообщение следующему окну в цепочке. message.Result:= SendMessage(FNextViewerHandle, WM_CHANGECBCHAIN, message.wParam, message.lParam); end; end; end. Копирование в буфер обменаДве вспомогательных процедуры: procedure CopyButtonClick(Sender: TObject); begin If ActiveControl is TMemo then TMemo(ActiveControl).CopyToClipboard; If ActiveControl is TDBMemo then TDBMemo(ActiveControl).CopyToClipboard; If ActiveControl is TEdit then TEdit(ActiveControl).CopyToClipboard; If ActiveControl is TDBedit then TDBedit(ActiveControl).CopyToClipboard; end; procedure PasteButtonClick(Sender: TObject); begin If ActiveControl is TMemo then TMemo(ActiveControl).PasteFromClipboard; If ActiveControl is TDBMemo then TDBMemo(ActiveControl).PasteFromClipboard; If ActiveControl is TEdit then TEdit(ActiveControl).PasteFromClipboard; If ActiveControl is TDBedit then TDBedit(ActiveControl).PasteFromClipboard; end; Форма как графический объектКаким образом можно скопировать форму в буфер обмена в виде графического изображения? uses clipbrd; procedure TShowVRML.Kopieren1Click(Sender: TObject); var bitmap:tbitmap; begin bitmap:=tbitmap.create; bitmap.width:=clientwidth; bitmap.height:=clientheight; try with bitmap.Canvas do CopyRect (clientrect,canvas,clientrect); clipboard.assign(bitmap); finally bitmap.free; end; end; |
|
||
Главная | В избранное | Наш E-MAIL | Добавить материал | Нашёл ошибку | Наверх |
||||
|