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

Вниз

Вопрос по MS Word...   Найти похожие ветки 

 
kull   (2002-11-15 17:11) [0]

Как скопировать все содержимое документа (ActiveDocument) в новый документ (Documents.Add) не пользуясь буфером обмена?


 
Calm   (2002-11-15 17:15) [1]

Ну если без картинок, таблиц, в общем, только текст,
то можно перебирать по параграфам. Читаем параграф из одного документа, записываем в другой. И так до конца.
Если есть картинки и таблицы, то возникает проблема с их порядком.

А почему нельзя использовать буфер обмена? Если там что важное находится, то это "что-то" можно сохранить, а потом вернуть в буфер.


 
kull   (2002-11-15 17:32) [2]


> Calm © (15.11.02 17:15)

Тогда вопрос: А как сохранить содержимое буфера обмена?


 
MBo   (2002-11-15 17:56) [3]

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

var FS:TFileStream;

procedure TForm1.bClearClick(Sender: TObject);
begin
OpenClipBoard(0);
EmptyClipboard;
CloseClipBoard;
end;

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;

(использованы идеи Peter Below)


 
kull   (2002-11-16 00:05) [4]


> MBo © (15.11.02 17:56)

Спасибо! Вот это очень полезный совет.


 
MBo   (2002-11-16 09:36) [5]

>kull
Надо только учитывать, что это не сработает при отложенном копировании по запросу (render...), когда приложение-источник данных реально не записывает их в область, доступную через клипборд, а ждет запроса от приемника. Это иногда используется при копировании больших объемов.


 
kull   (2002-11-18 11:44) [6]


> MBo © (16.11.02 09:36)

Да, вот это нехорошо...
Значит мне не подойдет. Поэтому-то я и нехочу использовать буфер.



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

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

Наверх





Память: 0.46 MB
Время: 0.008 c
1-93021
solder
2002-11-19 11:08
2002.11.28
help me please


1-92956
kva
2002-11-18 11:57
2002.11.28
Переход итогов на новую страницу в Crystal Reports


1-93105
atmospheric
2002-11-17 02:52
2002.11.28
OpenGL поворот


1-93035
AlexT1000
2002-11-19 13:09
2002.11.28
КАК у ToolButton выставить фонт Caption?!


14-93229
Cr@sh
2002-11-10 15:57
2002.11.28
Подскажите какую-нибудь тему для практической работы по математ..





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский