{
Clipboard has methods GetComponent and SetComponent but we need
to stream multiple components to the clipboard to include copy paste type
of feature.
Die Zwischenablage hat die Methoden GetComponent and SetComponent
aber wir wollen mehrere Komponenten in die
Zwischenablage speichern und wieder auslesen.
}procedure CopyStreamToClipboard(fmt: Cardinal; S: TStream);
var
hMem: THandle;
pMem: Pointer;
begin
S.Position := 0;
hMem := GlobalAlloc(GHND or GMEM_DDESHARE, S.Size);
if hMem <> 0 thenbegin
pMem := GlobalLock(hMem);
if pMem <> nilthenbegin
S.Read(pMem^, S.Size);
S.Position := 0;
GlobalUnlock(hMem);
Clipboard.Open;
try
Clipboard.SetAsHandle(fmt, hMem);
finally
Clipboard.Close;
end;
end{ If }elsebegin
GlobalFree(hMem);
OutOfMemoryError;
end;
end{ If }else
OutOfMemoryError;
end; { CopyStreamToClipboard }procedure CopyStreamFromClipboard(fmt: Cardinal; S: TStream);
var
hMem: THandle;
pMem: Pointer;
begin
hMem := Clipboard.GetAsHandle(fmt);
if hMem <> 0 thenbegin
pMem := GlobalLock(hMem);
if pMem <> nilthenbegin
S.Write(pMem^, GlobalSize(hMem));
S.Position := 0;
GlobalUnlock(hMem);
end{ If }elseraise Exception.Create("CopyStreamFromClipboard: could not lock global handle " +
"obtained from clipboard!");
end; { If }end; { CopyStreamFromClipboard }
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Копирование потока компонент в буфер обмена", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!