PDA

View Full Version : افزودن RichTextBox به DataGrid در vs2005



Mehrafrooz
شنبه 29 بهمن 1384, 21:02 عصر
چطور می شه RichTextBox رو به جای TextBox های خود DataGrid استفاده کرد . اصلا می شه RichTextBox رو به DataGrid اضافه کرد ؟ و یا اینکه می شه کاری کرد که ستونهای TextBox دیتا گرید RTF رو ساپورت کنه و فیلدهایی که به صورت RTF ذخیره شده اند رو مثل RichTextBox درست نشون بده ؟

vbapr2005
شنبه 29 بهمن 1384, 22:50 عصر
سلام. راستشو بخوای الان من خودم یه راه به ذهنم رسید اما اون خودش یه پروژه است 10 برابر سنگین تر از اون کاری که میخوای انجام بدی!!!

اگه دیگه واقعا به بن بست رسیدی شاید من بتونم یه کاری بکنم تا حداقل به یه بن بست جدید برسی!

niloufar
یک شنبه 30 بهمن 1384, 12:52 عصر
سلام
ماهیت DataGrid برای دریافت رکوردها میباشد که فیلد از نوع RichText Format هم معنی ندارد (فیلد Ole هم که فرمت مشخصی ندارد). لذا تقریبا در حد صفر به نظر میرسد که خود DataGrid فایلهای RTF رو ساپورت کند.
یا باید دنبال یه کامپوننت باشید و یا خودتون یه نیمچه کامپوننت (و با استفاده از خود کلاس RichTextBox ) ایجاد کنید

Mehrafrooz
یک شنبه 30 بهمن 1384, 13:33 عصر
خانم نیلوفر مشکل همون نیمچه کامپوننته . اگه یه نیمچه راهنمایی کنید ممنون می شم یا یه کامپوننتی که این مسئله رو ساپورت کنه معرفی کنید هم بد نیست
دوست عزیز vbapr205 شما هم هرچی که به ذهنتون رسیده رو بگید شاید خودم بتونم بقیه اش رو تکمیل کنم و به بن بست نرسم

linux
یک شنبه 30 بهمن 1384, 16:41 عصر
یه چیز عجیبی می خواهید. می شه بگید این کار چه کاربردی دارد؟

Mehrafrooz
یک شنبه 30 بهمن 1384, 16:58 عصر
کاربردش اینه که از این طریق فرمولهای ریاضی یا هر چیز دیگری که به صورت RTF در دیتا بیس ذخیره کرده ام رو در دیتا گرید نشون بدم . در RichTextBox مشکلی ندارم ولی در DataGrid به صورت کدهای RTF نشون داده می شه .

vbapr2005
یک شنبه 30 بهمن 1384, 23:31 عصر
من اول میخواستم بگم میشه یدونه RTB (Rich Text Box) رو hide کرد و وقتی کاربر روی خونه ای که شما میخواید RTB باشه آورد، اون RTB رو نشون بدی و در اونجا قرار بدی و فوکاس رو هم به اون بدی تا کاربر بتونه کار مورد نظرش رو بکنه (که برای همین هم باید کمی تا قمتی بدبختی هایی رو تحمل کرد)

بعد (در هنگام lostfocus شدن اون RTB) باید اطلاعات موجود توی اون RTB رو توی دیتابیس قرار داد. برای این کار من راهی غیر از تبدیل اطلاعات RTB به متن معمولی از نوع string (تو پرانتز: ساختن یه ادیتور تقریبا پیشرفته که بتونه مثلا نوشته ها با رنگ های مختلف و ... رو به صورت یه استرینگ معمولی دربیاره مثل ادیتوری که ما ها داریم توش تایپ می کنیم) بلد نیستم.

همونطوری که میبینید خیلی کار سختیه ممکنه قسمت اولش رو به راحتی درست کرد اما در موقع ریختن اطلاعات RTB توی دیتابیس (از نوع استرینگ) خیلی خیلی کار سخت میشه.

niloufar
دوشنبه 01 اسفند 1384, 13:14 عصر
سلام
این یه نیمچه کامپوننت رو که گفتم من ندارم. اما اگه میخواید بنویسید (که کار خیلی سختیه) باید یه آرایه دوبعدی از RichText ها بسازید و همه قابلیتهای Gridها را با کد نویسی براش درست کنید.

Mehrafrooz
دوشنبه 01 اسفند 1384, 15:15 عصر
سلام
بعد از کلی گشت و گذار توی اینترنت یه مثال برای افزودن DateTimePicker به DataGridView پیدا کردم البته تو خود سایت مایکروسافت . با کمی تغییرات دست و پا شکسته تونستم RichTextBox رو هم به DataGrid اضافه کنم که چون زیاد وارد نیستم درست جواب نمیده و فقط وقتی که روی سلول مورد نظر دابل کلیک می کنی اون سلول به حالت RichTextBox در میاد و می تونی داخلش بنویسی از فرمول ریاضی گرفته تا اضافه کردن عکس .
حالا مشکل اینجاست که وقتی از سلول خارج می شی نشون نمیده و برای نشون داده شدن باید روی سلول دابل کلیک کرد . امیدوارم یکی از اساتید بتونه این مشکل رو حل کنه . چرا که با این روش می شه چیزهای دیگری هم به DataGrid اضافه کرد و نیازی به کامپوننتهای دیگری نباشه .
اولی DataGridViewDateTimePicker
2497
دومی DataGridViewRichTextBox
2498
و اما مثال سومی هم اینطوریه که از هر کدوم از DateTimePickerColumn و RichTextBoxColumn یه کلاس ساختم و وقتی که می خواستم به DataGrid ستون اضافه کنم علاوه بر نوع هایی که خودش داره این دو نوع رو هم بهش اضافه کرده که می تونید نوع ستون رو از این دو نوع نیز انتخاب کنید .
2499
در پایان امیدوارم یکنفر بتونه مشکل منو حل کنه ؟؟؟؟؟؟؟؟؟؟؟؟

Mehrafrooz
دوشنبه 01 اسفند 1384, 15:16 عصر
نمی دونم چرا هرچی آپلود می کنم داخل کادر نمیذاره

Mehrafrooz
سه شنبه 02 اسفند 1384, 19:10 عصر
کسی نبود کمک کنه ؟

بابک زواری
سه شنبه 02 اسفند 1384, 19:36 عصر
دنبال Render control در سایتهای مرجع بگردید

Mehrafrooz
سه شنبه 02 اسفند 1384, 22:48 عصر
آقای زواری عزیز میشه کمی بیشتر توضیح بدید

بابک زواری
سه شنبه 02 اسفند 1384, 23:28 عصر
ببخشید حواسم نبود Host Control بود
به چشم ببینم لینک چی دارم ( من تمام مشکلم اینه که یک برنامه درست حسابی برای مدیریت لینکها و محتوا ندارم )
هرچی گیرم میاد رو بعد از مدتی از دست میدم

linux
چهارشنبه 03 اسفند 1384, 00:43 صبح
من این مشکل را حل کردم کدی که اصلاح کردم را با مال خودت مقایسه کن
ببین همه خواص مهم rtb را باید در rtbcell و rtbColumn بیاری من برای تکست این کار را کردم برای بقیه هم این کار را انجام بده.
خوب ببین اگر باز مشکلی بود بگو من یه بار قبلا با استفاده از مثالی که توی c# بود برای maskedtextbox این کار را کرده بودم و درست کار می کرد.

Mehrafrooz
چهارشنبه 03 اسفند 1384, 01:27 صبح
linux جان از وقت که گذاشتی ممنون .
ولی باز هم مشکل حل نشد و درست شد مثل همونی که من ساختم . یعنی وقتی داخل سلول کلیک می کنی تبدیل به RTB می شه ولی وقتی از سلول خارج می شی به حالت TextBox در میاد و متن داخل RTB رو به صورت متن TextBox نشون می ده . برای مثال بعد از کلیک داخل سلول و تبدیل شدن به RTB ، داخل اون یک حرف با توان یک عدد بنویس ، بعد از خارج شدن از سلول ، اون توان رو درست همتراز با حرف در می یاره . مشکل اصلی من هم در همین یه تکه است که نذارم به حالت TextBox برگرده و در همون حالت RTB باقی بمونه . حتی اگه تمام خواص RTB رو هم میارم باز هم بعد از خارج شدن از سلول دوباره به حالت TextBox برمی گرده و این بار کدهای RTF رو نشون می ده .
باز هم از زحمت و توجهی که کردی بینهایت ممنون .

linux
چهارشنبه 03 اسفند 1384, 09:39 صبح
خوب حالا اون مشکل نشان ندادن cell حل شد. بقیه اش را هم درست می کنیم.