PDA

View Full Version : دانستن نام فونت متن که در Clip Board است.



majid_borland
یک شنبه 19 مرداد 1382, 11:51 صبح
سلام
من در حال نوشتن یک فارسی ساز هستم .
و به یک مشکل اسای بر خوردم.
و آن دانستن فونت متن کپی شده در Clip Board است.
امید وارم کمکم کنید.
خداحافظ.

hr110
یک شنبه 19 مرداد 1382, 14:51 عصر
:shock:
دوست عزیز اینکار به این سادگیها میسر نیست چرا clipborad هم مانند یک فایل عمل میکند و شما با کپی / past کردن اطلاعات را درون آن ریخته و میخوانید ..

موفق باشید.

majid_borland
یک شنبه 19 مرداد 1382, 20:10 عصر
سلام.
دوست عزیز من میدونم ساده نیست.
اما چه کنم.
دوست عزیز من فارسی ساز نوشته ام.
و میخواهم امکانات فوق العاده به آن بدهم.
1.با یک Active=True کلیه ابزاز ها فارسی شود.
2.تبدیل کلیه کد پیچ ها به مد پیچ خودم.
...
خدا حافظ.

amirrf
پنج شنبه 23 مرداد 1382, 00:25 صبح
سلام،

هر زمان داده ای به کلیپ برد کپی می شود بسته به برنامه ای که این کار را انجام می دهد بطور همزمان این داده در چند فرمت مختلف در کلیپ برد قرار می گیرد. شما از طریق موضوع TClipBoard در یونیت Clibbrd به تمامی محتوای کلیپ برد دسترسی دارید. از طریق دو خاصیت FormatCount و Formats می توانید فرمت های موجود در کلیپ برد را شمارش کنید یا از طریق تابع HasFormat وجود فرمت موردنظر را بررسی کنید. سپس از طریق متد GetAsHandle می توانید داده درون کلیپ برد را با فرمت مشخص بخوانید.

در مورد متن دارای فرمت؛ معمولا برنامه ها اینگونه متن را با فرمت های Text و RTF و HTML درون کلیپ برد قرار می دهند پس می توانید مثلا با فرمت RTF متن را بگرید و اطلاعات فونت را از آن بیرون بکشید.

اما یک راه ساده برای کاربرد شما:
از یک TRichEdit استفاده کنید و محتوای کلیپ برد را در آن Paste کنید. این کنترل با فرمت RTF کار می کند و می توانید از طریق متدهای TRichEdit اطلاعات فونت متن را بگیرید.


procedure TForm1.Button1Click(Sender: TObject);
begin
with RichEdit1 do
begin
Clear;
PasteFromClipboard;
SelStart := 0;
ShowMessage( RichEdit1.SelAttributes.Name );
end;
end;

اطلاعات دیگر فونت غیر از نام آن نیز بطور مشابه از طریق SelAttributes در دسترس هستند.