PDA

View Full Version : سوال: تغییر نمایش فیلد از نوع Boolean در DBGrid



اصغر (پآچ)
پنج شنبه 02 خرداد 1387, 00:26 صبح
سلام دوستان
من یه Dbgrid رو فرمم گذاشتم که به یه بانک با فیلدهایی از نوع Boolean وصله
وقتی Query رو اجرا می کنم در DBGrid مقادیر فیلد ها به صورت True و False نمایش داده میشه من می خوام بجای true از کلمه "بله" و بجای False از کلمه "خیر" در DBGRIAd استفاده بشه چطوری می تونم این کار رو انجام بدم؟

rasoolgh
پنج شنبه 02 خرداد 1387, 07:16 صبح
از خاصيت OngetText مربوط به فيلد استفاده کنيد

procedure TForm1.ADOQuery1myFieldGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
if ADOQuery1.FieldByName('MyField').AsBoolean then
Text := 'بلي'
else
Text := 'خير'
end;

اصغر (پآچ)
جمعه 03 خرداد 1387, 01:58 صبح
سلام



از خاصيت OngetText مربوط به فيلد استفاده کنيد
کد:
procedure TForm1.ADOQuery1myFieldGetText(Sender: TField; var Text: String; DisplayText: Boolean);begin if ADOQuery1.FieldByName('MyField').AsBoolean then Text := 'بلي' else Text := 'خير'end;



بعد با این روش در DBGrid هم بلی و خیر نمایش داده می شه؟

vcldeveloper
جمعه 03 خرداد 1387, 02:15 صبح
بعد با این روش در DBGrid هم بلی و خیر نمایش داده می شه؟
بله

--------

اصغر (پآچ)
دوشنبه 06 خرداد 1387, 13:50 عصر
این دستور رو من بکار بردم اما کار نکرد!
اصلا کجا باید استفادش کنم؟ توی دیتا ماژول ؟ یا توی فرمی که DBGrid رو داره؟
اصلا من رویدادی به اسم myFieldGetText ندیدم

SYNDROME
دوشنبه 06 خرداد 1387, 16:48 عصر
فیلد مورد نظر ار به aDO اضافه کنید و داخل خصوصیت DisplayValuesآن بنویسید "بله;خیر"
موفق باشید

اصغر (پآچ)
سه شنبه 07 خرداد 1387, 19:47 عصر
ممنون دوست خوبم امتحان می کنم خبرش رو بهت می دم ممنون

babak_delphi
چهارشنبه 08 خرداد 1387, 00:11 صبح
برای روش قبل هم باید روی ADOQuery راست کلیک کنی و Add Fields رو کلیک کنی و بعد که فیلد ها اضافه شدند فیلد مورد نظر را انتخاب کنی
حالا در Object Inspector میتونی اون ایونت رو ببینی

amin_alexi
چهارشنبه 08 خرداد 1387, 13:47 عصر
یا میتونی یک View بنویسی و روی آن فیلد یک Function تو SQL بنویسی که مقدار بلی یا خیر بر گردونه ....
و یا از رویداد DrawDataCell استفاده کنی !

اصغر (پآچ)
چهارشنبه 08 خرداد 1387, 15:31 عصر
ممنونم جواب داد از همتون مخصوصا از دوست خوبم SYNDROME (http://barnamenevis.org/forum/member.php?u=35868)
کاربر دائمی
http://barnamenevis.org/forum/images/ranks/star1000.gif
انشا ا... جبران کنم!

seaman202008
چهارشنبه 08 خرداد 1387, 18:54 عصر
بنده نیز از راهنمایی دوستان تشکر می نمایم

farrokhi
سه شنبه 18 تیر 1387, 18:57 عصر
من بصورت ديناميكADOQuery رو پر مي كنم چطوري به رويداد ongettext دسترسي داشته باشم
اگه ممكنه تلفني صحبت كنيم
حسين فرخي:09153050351

farrokhi
سه شنبه 18 تیر 1387, 19:00 عصر
من بصورت ديناميكADOQuery رو پر مي كنم چكار كنم كه به رويداد ongettext دسترسي داشته باشم
حسين فرخي:09153050351

farrokhi
سه شنبه 18 تیر 1387, 19:01 عصر
من بصورت ديناميكADOQuery رو پر مي كنم چطوري به رويداد ongettext دسترسي داشته باشم
اگه ممكنه حسين فرخي:09153050351

SYNDROME
سه شنبه 18 تیر 1387, 20:02 عصر
من بصورت ديناميكADOQuery رو پر مي كنم چطوري به رويداد ongettext دسترسي داشته باشم
اگه ممكنه حسين فرخي:09153050351
یک تابع به شکل زیر تعریف کنید.


procedure TForm1.GetTextField(Sender: TField; var Text: string;DisplayText:Boolean);
begin

end;

و دستورات را داخل آن بنویسید.
حالا به شکل زیر تابه غوف را به فیلدتان وصل کنید.


ADOQuery1.FieldByName('Field1').OnGetText := GetTextField;

موفق باشید

beginner63
سه شنبه 29 مرداد 1387, 11:40 صبح
سلام
من هم query رو ديناميك پر ميكنم ولي ميخوام بوسيله dbgrid و رويداد ondrawcolumncell نحوه نمايش مقادير رو كنترل كنم. لطفا راهنمايي كنيد. تشكر

SYNDROME
سه شنبه 29 مرداد 1387, 18:24 عصر
سلام
من هم query رو ديناميك پر ميكنم ولي ميخوام بوسيله dbgrid و رويداد ondrawcolumncell نحوه نمايش مقادير رو كنترل كنم. لطفا راهنمايي كنيد. تشكر
برای کنترل مقادیر بهتر است از OnCalField ها استفاده کنید.
البته می توانید از دستورات sQL هم استفاده کنید(Case When)البته باید بعد از هر تغییر ADO را یک بار Close و Open کنید.
موفق باشید

beginner63
چهارشنبه 30 مرداد 1387, 07:50 صبح
برای کنترل مقادیر بهتر است از OnCalField ها استفاده کنید.
البته می توانید از دستورات sQL هم استفاده کنید(Case When)البته باید بعد از هر تغییر ADO را یک بار Close و Open کنید.
موفق باشید

OnCalcField كه مربوط به ado ميشه. براي dbgrid و drawColumnCell راهي نداريد؟

beginner63
چهارشنبه 30 مرداد 1387, 10:37 صبح
جوابشو پيدا كردم. ميگم شايد به درد دوستان ديگه هم بخوره:

if dataset.FieldValues['MyBooleanField'] = true then
DBGrid.Canvas.TextOut(Rect.Left, Rect.Top, 'بله')
else
DBGrid.Canvas.TextOut(Rect.Left, Rect.Top, 'خير');
اما مشابه اين مشكل رو در fast هم دارم:
http://barnamenevis.org/forum/showthread.php?t=118500
ممنون ميشم راهنمايي كنيد.
تشكر. موفق باشيد