PDA

View Full Version : ارسال تصوير به MsWord



ب- تات
سه شنبه 11 تیر 1387, 15:56 عصر
با سلام :
چطور مي تونم از داخل برنامه توي دلفي يك تصوير مثل يك امضا رو در جايي مشخص توي متن برنامه Office انتقال بدم؟
متن را مي فرستم اما تصوير رو نمدونم؟ آيا نياز هست از Bookmark در متن Office استفاده كنم؟
متشكرم .

ب- تات
پنج شنبه 20 تیر 1387, 13:27 عصر
عجب حتي يك جواب هم نداشتم!!!!
يعني هيچ كدام از اساتيد نمي تونن كمك كنن؟
من توي يك داكيومنت WORD دو تا Bookmark ايجاد ميكنم . از داخل دلفي براي بوك مارك اولي يك متن مفرستم و نمايش داده ميشود. حالا براي دومي ميخواهم يك تصوير مانند امضا بفرستم. چطور ميتونم اين كار را بكنم؟

Mahyaa
پنج شنبه 20 تیر 1387, 15:00 عصر
متن را چطوری نوشتی ؟
من با این روشی که گفتی آشنا نیستم ولی با استفاده از OLE و دستورات VBA برای درج متن و عکس و ... این کار رو کردم .
فرض کنیم توی یک فرم یک OLE Container داریم که داکیومنت را در آن باز کردیم :

با فرض


OCn : TOleContainer;
WordApp : OleVariant;
PicPath : String;
PicAlignMent : Integer ;

و همچنین


WordApp := OCn.OleObject.Application;

من برای درج عکس این کار رو کردم :



WordApp.Selection.InlineShapes.AddPicture(PicPath , False , True);
WordApp.Selection.ParagraphFormat.Alignment := PicAlignMent;

mortezakiaee
پنج شنبه 20 تیر 1387, 15:20 عصر
کلا اگه با شروع کار با ورد مشکل نداری بقیه کار رو این طور می تونی بفهمی.
ورد رو باز کن
یه ماکرو رکورد کن
بعد توی VBE اون ماکرو رو نگاه کن. تمام توابع مورد نیاز هست

ب- تات
پنج شنبه 20 تیر 1387, 18:33 عصر
کلا اگه با شروع کار با ورد مشکل نداری بقیه کار رو این طور می تونی بفهمی.
ورد رو باز کن
یه ماکرو رکورد کن
بعد توی VBE اون ماکرو رو نگاه کن. تمام توابع مورد نیاز هست

متشكرم از راهنمائي خوبتون
اما ميخوام بدونم چطور ميتونم در محل يك bookmark خاص توي word يك فايل تصوير بفرستم. يعني به جاي متن يك فايل تصوير در محل bookmark ظاهر بشه؟

Mahyaa
پنج شنبه 20 تیر 1387, 20:40 عصر
خوب دوباره برگشتیم سر جای اولمون . راهنمایی که دوستمون توی پست چهار کردن ، خیلی مفیده ! (حداقل امتحان کن نتیجه اش رو ببین )
من هنوز نفهمیدم برای درج متن از چه روشی استفاده میکنی. شاید اگه اون قسمت از کد رو که متن رو مینویسی بگذاری ، بهتر باشه .

با تب Server کار میکنی ؟ OLE Container استفاده میکنی ؟

hedi
پنج شنبه 20 تیر 1387, 21:50 عصر
عزیز جان فقط کافی است عکس مربوطه را اول در Delphi بیاری بعد آن را با استفاده از دستورات Clipboard ویندوز مثل Copy عکست را Asign کنی بعد در شئ WordApplication کافی است که آن را در جای موردنظر Past کنی اگر خیلی حیاتی بگو تا کدش را برات بگذارم البته من یک ، دو روز یکبار به سایت سر می زنم OK

nassim_20
دوشنبه 24 تیر 1387, 10:19 صبح
کد خودتون رو بگذارید تا دیگران هم استفاده کنند

ب- تات
سه شنبه 25 تیر 1387, 17:15 عصر
کد خودتون رو بگذارید تا دیگران هم استفاده کنند

ماجراي بنده به شكل زير حل گرديد:


Uses ComObj,clipbrd
-----------------------------------------------------------------------------
Procedure MakeOfficeDoc(ٌWordFname : String; TxTBody : String);
var
WordApp,BookmarkName, Doc, R: OleVariant;

YourWordDocument : string;
begin
YourWordDocument := WordFname ;
try
WordApp := CreateOleObject('Word.Application');
except
ShowMessage('.نرم افزار آفيس قابل اجرا نمي باشد');
end;
WordApp.Documents.Open(YourWordDocument);
Doc := WordApp.ActiveDocument;
BookmarkName := 'bdy';

if Doc.Bookmarks.Exists(BookmarkName) then
begin
R := Doc.Bookmarks.Item(BookmarkName).Range;
R.InsertAfter(TxTBody);// تزريق متن به محل مورد نظر
end;

BookmarkName := 'sgn';

if Doc.Bookmarks.Exists(BookmarkName) then
begin
R := Doc.Bookmarks.Item(BookmarkName).Range;
Clipboard.Assign(DBImage1.Picture); // كپي تصوير در كليپ برد
R.Paste; // الصاق تصوير از كليپ برد به محل مورد نظر
end;
if not VarIsEmpty(WordApp) then
begin
WordApp.DisplayAlerts := 0;
try
WordApp.Documents.Item(1).Save;
finally
WordApp.Quit;
BookmarkName := Unassigned;
R := Unassigned;
WordApp := Unassigned;
end;
end;
end;


البته قبل از اون در فايل آفيس 2 تا بوك مارك ايجاد كردم به اسامي bdy , sgn سپس محل اونها رو تنظيم و بقيه كار هم كه در بالا ذكر شده...