Вниз
Скачать: CL | DM;

Масштаб метафайла   Найти похожие ветки 

 
alxx ©   (2002-06-27 12:11) [0]

При переносе метафайла из проги в Word через ClipBoard почему-то меняется его размер - 12-й шрифт вдруг становится размером с 14-й. Как его можно выравнять?


 
Volj ©   (2002-06-27 13:23) [1]

А ты как переносишь? Код в студию.


 
alxx ©   (2002-06-27 14:04) [2]

Допустим так:

procedure TForm1.ToolButton18Click(Sender: TObject);
Var
clp :TClipboard;
Meta :TMetaFile;
Canv :TMetaFileCanvas;
Begin
WA.Connect;

Meta:=TMetaFile.Create;

Meta.Width:=80; Meta.Height:=20;
Meta.Enhanced:=True;

Canv:=TMetaFileCanvas.Create(Meta,0);
Canv.Font.Size:=12; Canv.Font.Name:="Times New Roman";

Canv.TextOut(0,0,"Здрассьте");
Canv.Free;
Canv:=nil;

WD.ConnectTo(WA.ActiveDocument);

clp:=TClipboard.Create;
clp.Assign(Meta);
clp.Free;

WD.ActiveWindow.Selection.Paste;


Meta.Free;

WD.Disconnect;
WA.Activate;
WA.Disconnect;
end;


Где WA и WD - TWordApplication и TWordDocument соответственно.

Причем пытался смотреть размеры в миллиметрах через
Meta.MMWidth и
WA.PointsToMillimeters(WD.InlineShapes.Item(i).Width), дык совпадают же, что любопытно!!!

Я конечно могу сделать на два пункта меньше у себя в проге, но боюсь это от чего-то зависит...


 
Volj ©   (2002-06-27 15:16) [3]

Вставляй как
WD.ActiveWindow.Selection.PasteSpecial(Link:=False,
DataType:=wdPasteEnhancedMetafile,
Placement:=wdFloatOverText, DisplayAsIcon:=False);

иначе у тебя вставляется как рисунок.


 
alxx ©   (2002-06-27 15:48) [4]

Спасибо, сейчас попробую.
А можно ли сделать так, чтобы он и только он был selected после вставки?


 
Volj ©   (2002-06-27 16:22) [5]

Очевидно, да :) Пользуйся возможностью записи макросов. Deselect&select, и записанный макрос покажет тебе, что нужно сделать.


 
alxx ©   (2002-06-27 16:48) [6]

Возникла пара проблем:

а. Мне надо бы туда, где курсор
б. Надо бы в InlineShape, но в принципе могу сделать ConvertToInlineShape - но для этого надо знать номер Shape. Как бы?


 
alxx ©   (2002-06-28 10:12) [7]

Мне пришлось наворотить вот такое:

WD.ActiveWindow.Selection.ShapeRange.ConvertToInlineShape;

tt1:=wdCharacter; tt2:=1; tt3:=wdExtend;

WD.ActiveWindow.Selection.MoveRight(tt1,tt2,tt3);
WD.ActiveWindow.Selection.Cut;
WD.ActiveWindow.Selection.Start:=Trunc(X);
WD.ActiveWindow.Selection.Paste;
WD.ActiveWindow.Selection.
WD.ActiveWindow.Selection.MoveLeft(tt1,tt2,tt3);


Будет ли это правильно и всегда работать?



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.017 c
1-47288
Виталик
2002-06-25 17:24
2002.07.15
Палитра


14-47690
wicked
2002-06-17 00:46
2002.07.15
Новая идея... в поддержку защищенности форума...


14-47675
Malder
2002-06-16 23:58
2002.07.15
Спасибо модераторам


7-47855
dron-hack
2002-04-11 00:32
2002.07.15
Программирование Пультов ДУ устройств


1-47524
Skywalker
2002-07-01 11:23
2002.07.15
Как в BCPP узнать длину динамического массива?




   Наверх