PDA

View Full Version : تغییر نمایش یک مقدار در یک TDbEdit



Delphi_OnLine999
چهارشنبه 29 فروردین 1386, 01:28 صبح
چطور میشه در یک DBGrid تاریخ میلادی که در یک فیلد بانک (ClientDataSet ) از نوع Date وجود دارد را پس تبدیل به شمسی فقط در کنترل مربوط به خود نمایش داد.یعنی پس از محاسبه تاریخ شمسی معادل آن را بروی کنترل مربوط به خود آن رکورد نمایش داد.

ghabil
چهارشنبه 29 فروردین 1386, 10:03 صبح
از رویداد OnGetText فیلد استفاده کن مخصوص همین کار هست.

Delphi_OnLine999
پنج شنبه 30 فروردین 1386, 00:36 صبح
با عرض معذرت من یک DbCtrlGrid دارم.....
دوست عزیز من یک DBCtrlGrid دارم که در آن چند کنترل TdbEdit قرار دارد یکی از این TdbEdit ها به یک فیلد از بانک ClientDataSet من متصل است که از نوع تاریخ است چون تاریخ را نمی توان به صورت شمسی وارد کرد من را به صورت میلادی در بانک ذخیره می کنم ..مشکل در این جاست که تاریخ میلادی را پس از تبدیل به نوع شمسی باید در TdbEdit مربوط به خود نمایش دهد یعنی محتوای فیلد تغییر نمی کند... فقط نمایش محتوای TdbEdit تغییر می کند ..آیا راهی است؟

vcldeveloper
پنج شنبه 30 فروردین 1386, 10:24 صبح
فقط نمایش محتوای TdbEdit تغییر می کند ..آیا راهی است؟
با اینکه صورت مسئله را تغییر دادید، ولی راه حلش باز هم همان OnGetText مربوط به فیلد است که در بالا توضیح داده شد. در سایت هم می تونید درباره اش مطالب بیشتری پیدا کنید. تغییر پارامتر Text در این رویداد فقط بر روی نمایش فیلد تاثیر داره و مقدار فیلد در بانک را تغییر نمیده.

Delphi_OnLine999
جمعه 31 فروردین 1386, 00:16 صبح
تغییر پارامتر Text در این رویداد فقط بر روی نمایش فیلد تاثیر داره و مقدار فیلد در بانک را تغییر نمیده.

با استفاده از OnGetText فیلد مورد نظر در هر کجای برنامه چه جهت مقایسه چه جهت پردازش و چه جهت نمایش متنی را می دهد که در این تابع به مقدار Text داده می شود.
به طور کلی می توان گفت که هدف من فقط نمایش در یک کنترل خاص است یعنی زمانی که در DbEdit نمایش داده می شود فقط باید به این فرمت نشان بدهد در سایر قسمت های برنامه باید با همان شیوه که در فیلد است مورد استفاده قرار گیرد یعنی تغییر نکند و به این خاطر نمی توان از OnGetText استفاده کرد.
فکر می کنم اگر شیوه ای برای Paint کردن Text فیلد مورد نظر پس از تغییر را در DbEdit توسط Canvasبدانم مشکل حل شود...

Delphi_OnLine999
شنبه 01 اردیبهشت 1386, 02:11 صبح
آیا امکان دارد بتوان مقدار یک فیلد پس از خوانده شدن از بانک زمانی که می خواهد در DbEdit نمایش داده بشود(Paint) بتوان آن به طور دستی هر چیز دیگری(متنی)را به طور دستی Paint کرد ؟یک چیز شبیه به owner-draw.
توجه:توجه شود که از OnGetText استفاده نشود.هدف فقط Paint دستی در TdbEdit است.

vcldeveloper
شنبه 01 اردیبهشت 1386, 08:01 صبح
وقتی قست تغییر نحوه نمایش داده ها را دارید، مجبور نیستید حتما از DBEdit استفاده کنید. می تونید خیلی راحت از یک Edit معمولی استفاده کنید. می تونید کدی که باید برای تغییر نحوه نمایش داده ها نوشته بشه را در رویداد OnDataChange از DataSource متصل به DataُSet خودتون قرار بدید. کد مربوط به ثبت تغییرات را هم می تونید در رویداد OnUpdateData از DataSource یا OnBeforePost از DataSet قرار بدید.

vcldeveloper
شنبه 01 اردیبهشت 1386, 08:04 صبح
با توجه به اینکه سوال مشابهی را در تاپیک دیگری مطرح کرده بودید، مطالب این دو تاپیک با هم ادغام شدند. لطفا دفعات بعد از ایجاد تاپیک های مشابه برای رسیدن به جواب خودداری کنید.