PDA

View Full Version : سوال: درخواست Memo با قابلیت تشخیص HTML



khazaie01
شنبه 24 بهمن 1388, 19:33 عصر
سلام دوستان

دنبال Memo میگردم که بتونه کدهای HTML را تشخیص بده .
مثلا اگه تو Memo نوشته باشم :



<h1 style="color: #900;" >K01</h1>


K01 را به صورت درشت و با رنگ مورد نظر بنویسه !

ممنووووووووون

Mahmood_M
شنبه 24 بهمن 1388, 19:52 عصر
کامپوننت SynEdit رو در گوگل جستجو کنید ، این کامپوننت تقریبا برای اکثر زبانهای برنامه نویسی یک Edit مخصوص داره ، کار با این کامپوننت هم ساده هست، این کامپوننت رایگان هست و در SourceForge هم می تونید پیداش کنید ، ولی چون SourceForge رو کاربران ایرانی بسته شده ، اگر لینک دانلودش رو پیدا نکردید بگید تا براتون آپلود کنم ...

موفق باشید ...

khazaie01
شنبه 24 بهمن 1388, 20:07 عصر
ممنووون دوست عزیز ولی هرچی سرچ می کنم به سورس فورج ختم میشه !

Mahmood_M
شنبه 24 بهمن 1388, 20:09 عصر
ممنووون دوست عزیز ولی هرچی سرچ می کنم به سورس فورج ختم میشه !
از لینک زیر دانلود کنید :

http://mahmoodn.persiangig.com/image/DawnMN.gif (http://parsaspace.com/files/7804428884/synedit_2.0.6.rar.aspx)

موفق باشید ...

khazaie01
شنبه 24 بهمن 1388, 20:51 عصر
ممنوووووووون دوست عزیز
خیلی خیلی کامپوننت جالبی هست . اما ابزارهاش خیلی زیاده ... چیزی که تا اینجا بدست آوردم تغییر رنگ کدهای خاص بود ... اما من میخوام کد HTML را ترجمه کنه مثل مرورگر (مثال پست اول)

Mahmood_M
شنبه 24 بهمن 1388, 21:01 عصر
ممنوووووووون دوست عزیز
خیلی خیلی کامپوننت جالبی هست . اما ابزارهاش خیلی زیاده ... چیزی که تا اینجا بدست آوردم تغییر رنگ کدهای خاص بود ... اما من میخوام کد HTML را ترجمه کنه مثل مرورگر (مثال پست اول)
منظورتون رو از ترجمه نمی فهمم !
ولی اگه می خواید که نوشته هاتون Style مربوط به کدهای HTML رو داشته باشن ، از تب SynEdit یک کامپوننت SynEdit روی فرم بزارید و از تب SynEdit Highlighters هم یک کامپوننت SynHTMLSyn روی فرم بزارید ، و در آخر هم خاصیت Highlighter مربوط به SynEdit رو برابر با SynHTMLSyn1 قرار بدید ، اینطوری هر متنی که در SynEdit بنویسید ، با استایل HTML نمایش داده میشه ، کامپوننت SynHTMLSyn رو هم می تونید با توجه به نیازتون تغییر بدید ...

اگر منظورتون چیز دیگه ای هست بگید ...

موفق باشید ...

khazaie01
شنبه 24 بهمن 1388, 21:14 عصر
ممنووون دوست عزیز ولی :

<h1 style="color: #900;" >K01</h1>این متن را به Memo میدم و میخوام این را ترجمه و بعد نمایش بده یعنی اینو نشون بده
K01

Mahmood_M
شنبه 24 بهمن 1388, 22:17 عصر
این متن را به Memo میدم و میخوام این را ترجمه و بعد نمایش بده یعنی اینو نشون بده
ببخشید ، من منظورتون رو خوب نفهمیدم ...
برای مشاهده ی Source یک فایل HTML می تونید اون رو در یک TWebBrowser لود کنید و بعد سورسش رو مثلا در یک SynEdit نمایش بدید ، در این صفحه (http://delphi.about.com/od/adptips2005/qt/webbrowserhtml.htm) هم یک مثال در این رابطه هست ...
اما برای ویرایش یا ایجاد یک سورس HTML و تبدیل اون به یک صفحه HTML می تونید از این کامپوننت (http://www.atechgroup.net/) استفاده کنید ، که البته رایگان نیست ولی شاید بتونید اون رو در سایتهایی مثل www.Board4All.com پیدا کنید ...

البته خودم از این کامپوننت تا الآن استفاده نکردم ولی با توجه به امکاناتی که داره فکر کنم مشکلتون رو حل کنه ...

موفق باشید ...

khazaie01
یک شنبه 25 بهمن 1388, 11:35 صبح
ممنوووون

یک متغیر استرینگ دارم که توش تگهای HTML هم هست . مثلا امکان داره تو این رشته تگ H1 باشه یعنی بخشی از رشته این باشه :

<h1 style="color: #900;" >K01</h1>
حالا میخوام این رشته داخل یک Memo نمایش بدم اما نمیخوام تگهای HTML نمایش داده بشه بلکه میخوام Memo این تگها را مانند یک مرورگر ترجمه کند.یعنی به جای اینکه کد بالا در Memo نمایش داده شود فقط K01 با فونتی درشت و استایل مورد نظر نمایش داده شود.
دقیقا چیزی شبیه TWebBrowserبا این تفاوت که محتویات HTML را از یک متغیر String بگیرد.
امیدوارم منظورم را درست بیان کرده باشم .

Mahmood_M
یک شنبه 25 بهمن 1388, 15:23 عصر
حالا میخوام این رشته داخل یک Memo نمایش بدم اما نمیخوام تگهای HTML نمایش داده بشه بلکه میخوام Memo این تگها را مانند یک مرورگر ترجمه کند.یعنی به جای اینکه کد بالا در Memo نمایش داده شود فقط K01 با فونتی درشت و استایل مورد نظر نمایش داده شود.
دقیقا چیزی شبیه TWebBrowserبا این تفاوت که محتویات HTML را از یک متغیر String بگیرد.
امیدوارم منظورم را درست بیان کرده باشم .
یک Memo یا کامپوننتی که از Memo مشتق شده باشه و یا کلا امکان ویرایش متن رو در اختیار بزاره نمی تونه یک فایل HTML رو نمایش بده ، بعید می دونم بتونید همچین کامپوننتی پیدا کنید ، نهایت کامپوننتهای مانند Memo کامپوننتهای RichView و یا DtpDocuments یا ... هستند که همگی نوعی ویرایشگر به حساب میان و با اونها مثلا میشه یک چیزی شبیه به Word ساخت ...
شما باید از یک Memo برای سورس و یک WebBrowser برای نمایش در کنار هم استفاده کنید ، به این صورت که ابتدا سورس رو در Memo بنویسید بعد سورس رو در WebBrowser به صورت صفحه HTML نمایش بدید ، یک مثال ضمیمه شده ...

در مثال ضمیمه شده از یک Memo برای نوشتن سورس استفاده شده ، ولی برای بهتر شدن کار در برنامتون می تونید از یک SynEdit که در پست قبلی معرفی کردم استفاده کنید یا اصلا می تونید سورس رو در یک متغیر String قرار بدید و بعد به TWebBrowser بفرستید ...

امیدوارم مشکلتون حل بشه ، موفق باشید ...

khazaie01
یک شنبه 25 بهمن 1388, 18:07 عصر
خیلی خیلی خیلی خیلی ممنووووووووون دوست عزیز خیلی مفید بود
یه مشکل کوچیک ... کاربر با سورس کاری نداره بلکه سورس HTML داخل یک متغیر رشته ای است و کاربر فقط کامپوننت TWebBrowser را در صفحه مشاهده میکند یعنی متن آن را میخواند !
تو برنامه خودم یک Memo دارم که در هر لحظه یه line بهش اضافه میشه و کاربر متن را میتونه دنبال کنه .... اما با TWebBrowser مجبورم بعد از اینکه یک کلمه به متغیر رشته ای اضافه شد ، متغیر را با سورس شما به TWebBrowser نسبت بدم و در این حالت اسکرول TWebBrowser به حالت اول بر میگرده و کاربر نمیتونه متن را دنبال کنه !

khazaie01
دوشنبه 26 بهمن 1388, 10:51 صبح
تو کامپوننت SynEdit میشه به جای SynHTMLSyn از یه تنظیمات کاملا شخصی استفاده کرد ؟ مثلا میشه براش تعریف کرد کلمه سلام را با رنگ و فونت مشخصی نمایش بده ؟!
آیا این امکان وجود داره که مثل یاهو مسنجر داخل Memo عکس قرار داد ؟!!!! مثلا به جای یک کلمه خاص عکس قرار داد !!!

ممنوووووووووون

Mahmood_M
سه شنبه 27 بهمن 1388, 02:16 صبح
یه مشکل کوچیک ... کاربر با سورس کاری نداره بلکه سورس HTML داخل یک متغیر رشته ای است و کاربر فقط کامپوننت TWebBrowser را در صفحه مشاهده میکند یعنی متن آن را میخواند !
تو برنامه خودم یک Memo دارم که در هر لحظه یه line بهش اضافه میشه و کاربر متن را میتونه دنبال کنه .... اما با TWebBrowser مجبورم بعد از اینکه یک کلمه به متغیر رشته ای اضافه شد ، متغیر را با سورس شما به TWebBrowser نسبت بدم و در این حالت اسکرول TWebBrowser به حالت اول بر میگرده و کاربر نمیتونه متن را دنبال کنه !
در این مورد اطلاع زیادی ندارم ، ولی با یک جستجو در MSDN فهمیدم که با ScrollIntoView (http://msdn.microsoft.com/en-us/library/system.windows.forms.htmlelement.scrollintoview.as px) می تونید این کار رو انجام بدید ، اما هرچی سعی کردم نتونستم با WebBrowser دلفی این کار رو عملی کنم ... !

تو کامپوننت SynEdit میشه به جای SynHTMLSyn از یه تنظیمات کاملا شخصی استفاده کرد ؟ مثلا میشه براش تعریف کرد کلمه سلام را با رنگ و فونت مشخصی نمایش بده ؟!
بله شما می تونید کلمات کلیدی ، عملگرها و همینطور رنگ های مورد نظر خودتون رو روی SynEdit اعمال کنید ، برای اینکار یک کامپوننت TSynGeneralSyn روی فرم قرار بدید ، توی خاصیت KeyWords اون می تونید کلمات کلیدی خودتون رو معرفی کنید ، کمی باهاش کار کنید تا نحوه کار رو بهتر متوجه بشید ، کار باهاش زیاد سخت نیست ، علاوه بر این همراه کامپوننت یک پوشه شامل چند Demo از کامپوننت قرار داره که برای این منظور می تونید HighlighterDemo رو بررسی کنید که در همین مورد هست ...

آیا این امکان وجود داره که مثل یاهو مسنجر داخل Memo عکس قرار داد ؟!!!! مثلا به جای یک کلمه خاص عکس قرار داد !!!
خیر ، چون خروجی این کامپوننت از نوع TString هست ، به صورت معمول امکان نمایش تصویر درون Memo نیست ، اما شاید بشه با ترفندهایی این کار رو انجام داد ، ولی مطمئنا کیفیت کار به شدت پایین میاد ...

موفق باشید ...

khazaie01
سه شنبه 27 بهمن 1388, 15:13 عصر
وقتی به MEMO متن اضافه می کنم تگ
<a name="K01" > </a> را هم آخر متن می نویسم
با این کدی که دادید (TWebBrowser ) میتونم از تگ a استفاده کنم ؟! یعنی با #K01 صفحه را باز کنم تا به محل دلخواهم بره ؟!
ممنوووووووووووووووووووووو وون