Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.04.14;
Скачать: [xml.tar.bz2];

Вниз

Работа с ClipBoard   Найти похожие ветки 

 
xfrost   (2003-04-01 17:34) [0]

Не подскажите как можно скопировать содержимое буфера обмена куданибудь ,когда там любые данные , а потом обратно в буфер когда с ним уже поработали. Порсто я создаю отчеты в Word и для вставки рисунков использую Clipboard, хотелосьбы что бы его первоначальное содержимое осталось после всех олпераций


 
Skier   (2003-04-01 17:41) [1]

The Clipboard object is declared in the Delphi Clipbrd unit


 
MBo   (2003-04-01 17:57) [2]


Сохранение всего содержимого буфера обмена в файл

procedure TForm1.BSaveClick(Sender: TObject);
var CBF:Cardinal;
CBFList:TList;
i:Integer;
h:THandle;
p:Pointer;
CBBlockLength,Temp:Cardinal;
FS:TFileStream;
begin
if OpenClipBoard(0)then begin
CBFList:=TList.Create;
CBF:=0;
repeat
CBF:=EnumClipboardFormats(CBF);
if CBF<>0 then
CBFList.Add(pointer(CBF));
until CBF=0;
edit1.text:=IntToStr(CBFList.Count);
if CBFList.Count>0 then begin
FS:=TFileStream.Create("e:\cp.dat",fmCreate);
Temp:=CBFList.Count;
FS.Write(Temp,SizeOf(Integer));
for i:=0 to CBFList.Count-1 do begin
h:=GetClipboardData(Cardinal(CBFList[i]));
if h>0 then begin
CBBlockLength:=GlobalSize(h);
if h>0 then begin
p:=GlobalLock(h);
if p <> nil then begin
Temp:=Cardinal(CBFList[i]);
FS.Write(Temp,SizeOf(Cardinal));
FS.Write(CBBlockLength,SizeOf(Cardinal));
FS.Write(p^,CBBlockLength);
end;
GlobalUnlock(h);
end;
end;
end;
FS.Free;
end;
CBFList.Free;
CloseClipBoard;
end;
end;

procedure TForm1.bLoadClick(Sender: TObject);
var h:THandle;
p:Pointer;
CBF:Cardinal;
CBBlockLength:Cardinal;
i,CBCount:Integer;
FS:TFileStream;
begin
if OpenClipBoard(0)then begin
FS:=TFileStream.Create("e:\cp.dat",fmOpenRead);
if FS.Size=0 then Exit;
FS.Read(CBCount,sizeOf(Integer));
if CBCount=0 then Exit;
for i:=1 to CBCount do begin
FS.Read(CBF,SizeOf(Cardinal));
FS.Read(CBBlockLength,SizeOf(Cardinal));
h:=GlobalAlloc(GMEM_MOVEABLE or GMEM_SHARE or GMEM_ZEROINIT,CBBlockLength);
if h>0 then begin
p:=GlobalLock(h);
if p=nil then
GlobalFree(h)
else begin
FS.Read(p^,CBBlockLength);
GlobalUnlock(h);
SetClipboardData(CBF,h);
end;
end;
end;
FS.Free;
CloseClipBoard;
end;
end;


 
xfrost   (2003-04-01 17:58) [3]

CP : TClipBoard;

CP:=TClipBoard.Create
ClipBoard.Open;
CP:=ClipBoard;
ClipBoard.Close;
..........

ClipBoard.Assign(CP);

Такая фишка прокатит?


 
MBo   (2003-04-01 18:02) [4]

нет.


 
xfrost   (2003-04-01 18:13) [5]

Все сам понял, что глупость сказал.
Спасибо за пример с файлом - это было то что мне нужно.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.04.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
3-44000
Cranium
2003-03-25 11:20
2003.04.14
Как реализовать сдедующее.....


14-44443
Xitrik
2003-03-29 13:27
2003.04.14
Как из длины волны видимого света получить значение цвета в RGB?


14-44337
sid
2003-03-30 23:40
2003.04.14
А здесь здорово: Написал 2 часа назад 2 вопроса и уже ответили


9-43982
Извращенец
2002-11-12 17:37
2003.04.14
как рисовать...


3-44061
Vick
2003-03-26 13:08
2003.04.14
Выполнение пользовательской функции с помощью АДО





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский