View Full Version : انتقال متن RTF به ClipBoard و تغییر در آن
FirstLine
چهارشنبه 16 خرداد 1386, 08:27 صبح
با سلام
یه متن در فایل Word دارم که دارای فونتهای متفاوت و اندازه های متفاوت و بصورت کامل قالب بندی شده است .
این متن را با انتخاب در ورد به ClipBoard کپی میکنم.
حالا میخوام وقتی یک دکمه را در فرم میزنم تمام کلمات مثلا "ماشاالله" که در متن Word بصورت RTF وجود دارد با عبارت "ماشااله" عوض شده و با حفظ حالت، استایل و قالب قبلی خود در یک RichEdit نمایش دهد.
و اچجوری میتونم Enter های اضافه (دو اینتر بیشتر) را از کل متن حذف کنم؟
با تشکر
Mahyaa
پنج شنبه 17 خرداد 1386, 10:46 صبح
برای جایگزینی متن در Clipboard میتونید از Clipboard.AsText استفاده کنید AsText یک Property متعلق به Clipborad هستش که خوشبختانه هم میتونید در اون بنویسید و هم ازش بخونید .
با استفاده از تابع Pos در دلفی میتونید کلماتتون رو پیدا کنید و جایگزین کنید .
فقط برای اینکه مطمئن باشید که Clipboard حاوی متن است (نه گرافیک و ... ) بهتره این شرط رو در ابتدا چک کنید :
if Clipboard.HasFormat(cf_text) then
begin
//
end;
Mahyaa
پنج شنبه 17 خرداد 1386, 11:11 صبح
من خودم این رو تست کردم .
به نظر میاد ، تغییر دادن AsText فرمت و استایل رو تغییر میده !
برای حفظ فرمت و استایل میتونید از ابتدا متن داخل Clipboard رو در یک متغیر از نوع TRichEdit کپی کنید (که البته در زمان اجرا Create و Free شود و Visible هم نشود) . متد PasteFromClipboard آنرا صدا بزنید . همین جایگزینی کلمات را در Text آن ، انجام بدید .
موفق باشید
FirstLine
پنج شنبه 17 خرداد 1386, 13:41 عصر
من خودم این رو تست کردم .
به نظر میاد ، تغییر دادن AsText فرمت و استایل رو تغییر میده !
برای حفظ فرمت و استایل میتونید از ابتدا متن داخل Clipboard رو در یک متغیر از نوع TRichEdit کپی کنید (که البته در زمان اجرا Create و Free شود و Visible هم نشود) . متد PasteFromClipboard آنرا صدا بزنید . همین جایگزینی کلمات را در Text آن ، انجام بدید .
موفق باشید
با سلام
میشه یه مثال بزنید؟
با تشکر
ghabil
پنج شنبه 17 خرداد 1386, 16:00 عصر
حالا چرا توی کلیپ برد ؟! اگر ببریش توی کلیپ برد اونقوت چطوری میخوای روی فرمت خاص (اگر Text نباشه که برای کار تو هم نیست Replace بکنی؟)
بنظر من با Interfaceهای Word بازش کن ، (باز کردنش موجب میشه بره توی حافظه) بعد هم با امکانات خود Word هر کاری که میخوای من جمله Replace هات رو انجام بده .
FirstLine
پنج شنبه 17 خرداد 1386, 18:15 عصر
با سلام
بحث کلی اینه که من میخوام از توی برنامه یه فایل WORD را انتخاب و اطلاعات آن با همان قالب و استایلهای نوشتها (اندازه و نوع فونت و...) به داخل یک DBRichEdit کپی یا درج یا اضافه شود و در ضمن کپی یا اضاف کردن چک کند که عددهای داخل نوشته به فارسی است آن را به عدد با کد پیج انگلیسی تبدیل کند و در نهایت محتویات DBRichEdit در بانک اطلاعاتی ذخیره شود.
برای انجام این مورد من مجبور شدم در سه تاپیک مجزا این مشکل را عنو ان کردم.
اگه یه راهنمایی بفرمایید خیلی ممنون میشوم.
با تشکر
ghabil
پنج شنبه 17 خرداد 1386, 18:47 عصر
مشکل اینه که کامل نیمگی میخوای چی کار کنی ، اگر بجای 3 تا تاپیک توی یک تاپیک کل ماجرا رو میگفتی حتما زودتر به نتیجه میرسیدی، چون خیلی پیش میاد که دوستان راه حل غلطی برای حل صورت مسئله شون انتخاب مبکنند ، در این شرایط اگر کل سناریو رو کامل بگن شاید بشه بهشون راه حل بهتری پیشنهاد داد.
بازهم با اینکه سناریوت رو نمیدونم بهت پیشنهاد میکنم هر تغییری که روی اطلاعات میخوای بدی رو توی Word بدی ، بعد از خود Word بخوای بهت یک RTF بده (اگر واقعا باید RTF باشه و خود فایل ورد به درد نمیخوره) کپی کردن توی کلیپ برد و تغییراتی که روی اطلاعاتت اتفاق میفته خیلی غیر قابل پیشبینی هست ، مثلا برای کامپیوتری که Locale سیستمش انگیلیسی هست یا فارسی روی یک متن یونیکد کاملا فرق میکنه !
FirstLine
پنج شنبه 17 خرداد 1386, 20:11 عصر
با سلام
آیا توی Word میشه کد اسکی یک سری حروف را عوض کنم؟ مثلا کاراکترهای با کد اسکی 150 را با 190 عوض کنم.
با تشکر
ghabil
پنج شنبه 17 خرداد 1386, 21:38 عصر
معلومه که میشه با دستور Replace دیگه.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.