PDA

View Full Version : نمایش تاریخ در DBGrid



Delphi KDE
یک شنبه 09 مرداد 1384, 01:27 صبح
سلام دوستان

من تاریخ را به صورت یک عدد صحیح با تابع تاریخ مخصوص به خودم تبدیل میکنم و در دیتابیس ذخیره میکنم حال زمانی که میخواهم فیلد تاریخ را در یک DbGrid نمایش دهم چگونه میتوانم تاریخ ذخیره شده که به صورت عدد صحیح است باز هم توسط یک تابع دیگر به صورت تاریخ رشته ای برمیگردانم حال چگونه میتوان در DbGrid ان را نمایش داد
توابع من عملی مشابه توابع زیر دارند
DateTimeToUnix
UnixToDateTime
من فکر میکنم باید از رویداد های زیر استفاده کنم تا در زمان اجرا عدد تاریخ را بخوانم و به رشته تبدیل کنم ولی هر چه سعی کردم نشد
OnDrawColumnCell
OnDrawDataCell

vcldeveloper
یک شنبه 09 مرداد 1384, 02:17 صبح
شما می تونید از رویدادهای OnGetText و OnSetText فیلد مربوطه استفاده کنید:


procedure TForm1.AdoTable1MyFieldGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
//Replace DecodeMyDate with your own function
Text := DecodeMyDate(Sender.asInteger);
DisplayText := True;
end;

procedure TForm1.AdoTable1MyFieldSetText(Sender: TField; const Text: String);
begin
Sender.AsInteger := EncodeMyDate(Text);
end;

به این ترتیب تاریخ مورد نظر شما در تمامی کنترلهای Data-aware بصورتی که شما تنظیم کرده اید نمایش داده میشه، اما مقادیر ذخیره شده در فیلد با مقدار نمایش داده شده به کاربر فرق می کنه
استفاده از OnDrawColumnCell موجب پیچیده تر شدن برنامه شما میشه و فقط بر روی DBGrid اثر داره.
OnDrawDataCell هم فقط برای backward-compatiblity وجود داره و باید بجاش از همون OnDrawColumnCell استفاده کنید.