PDA

View Full Version : مشکل رنگی کردن RichEdit



salar_sh
پنج شنبه 21 مهر 1384, 16:10 عصر
من می خواهم یک editor بنویسم که کلمات خاصی را در متن رنگی کند . مثل خود دلفی که انواع کلمات را به رنگهای مختلف در می آورد یا بولد می کند.
پارسر لازم را هم نوشته ام و متن داخل RichEdit را به آن می دهم و آن با استفاده از SelStart و SelLength و SelAttributes رنگ آن کلمات را عوض می کند.
اما اشکال اینجاست که این فرایند چون با Refresh شدن دائم RichEdit همراه است ، بسیار چشمک می زند و کند است.
من که هر کاری کردم که در مدت Analyze کردن متن ریچ ادیت خفه شه ، نتونستم.
لطفا شما یک کمکی بکنید.
ممنون.

vcldeveloper
جمعه 22 مهر 1384, 02:46 صبح
از متدهای Lines.BeginUpdate و Lines.EndUpdate استفاده کنید.

Naficy
جمعه 22 مهر 1384, 05:25 صبح
1 - RichEdit کلا برای اینکار مناسب نیست.
بهتره از کامپوننتهای مخصوص استفاده کنین. مثل:
- UCE یا UniCode Syntax Editor رایگان (http://www.lischke-online.de/UCE.php)
- کامپوننتهای RuiSoftware رایگان که چنین editorی رو همراه با یک پارسر همه منظوره دارن. (http://ruisoftware.com/products.html)
- یا شاید کامپوننت RichEdit Syntax Highlight که فقط بدرد منظورهای خاص می خوره (اونهم رایگان) (http://users.chello.be/ws36637)

2 - بازهم می گم، استفاده از SelStart و... برای تغییر رنگ کار جالبی نیست. اگر بتونین، بهتره مثلا کد HTML یا حتی کد RichEdit رو تولید کنین و بعد اون رو نمایش بدین. (می دونین که، RichEdit هم یه زبان متنی داره، مثل HTML که اونهم همینطوره. البته فهم زبان Rtf سختتره)

3 - اگر همچنان قصد استفاده از RichEdit رو دارین، چرا از Hide کردن و دوباره Show کردن استفاده نمی کنین؟ البته صحبت آقای کشاورز بهتره و باید هم جواب بده.