با این روشی که مدیرجون گفت فقط یه مشکل میمونه اونم اینه که دیگه واسه جدول فوق همون دوتا کد فیلد رو میشناسه و بقیه فیلدهارو(احتمالا واسه گذاشتن شرط یا ...)نمیشناسه
نمایش نسخه قابل چاپ
با این روشی که مدیرجون گفت فقط یه مشکل میمونه اونم اینه که دیگه واسه جدول فوق همون دوتا کد فیلد رو میشناسه و بقیه فیلدهارو(احتمالا واسه گذاشتن شرط یا ...)نمیشناسه
سلام.درسته مدیر جون به نکته خوبی اشاره کردی؟ این اتفاقا واسه خودم هم سوال بود که اگر از چند* Datasource و جدول در یک فرم استفاده بشه باعث کندی سرعت نمیشه؟
راستی تو جریان بالا منظورم گذاشتن شرطی بود که قضیه رنگی کردن فیلد هارو نقض نکنه.
سلام دوستان
من یک قطعه برنامه دارم در خصوص رنگی کردن بعضی از رکوردها در دی بی گرید
کد:
کد:procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;* Field: TField; State: TGridDrawState);
begin
if adoTABLE1.FieldByName("num1").asfloat= 8*then
DBGrid1.Canvas.Font.Color:=clred;
DBGrid1.Canvas.TextRect(rect,rect.left+2,rect.top+2,field.AsString);
*** end;
این قطعه برنامه میگه که تمام رکوردهای num1 که مقدار آن برابر 8 است رو با رنگ قرمز نمایش بده
تا اینجای کار که مشکلی نیست اما ...
من وقتی بر روی دی بی گرید دابل کلیک کرده تا برخی از فیلدها فقط نمایش داده شوند ، این قطعه برنامه کار نمی کنه
ممنون میشم تغییراتش رو بهم بگید
با تشکر
من از رویداد فیلتر استفاده نمی کنم
ممنون
[برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
مشکل من با فیلتر کردن نیست ، با نحوه نمایش هست
یک کدی هست که میگه Num1 هایی رو که 8 هستند رو قرمز میکنه و در دی بی گرید نمایش میده
تا اینجاش درسته و مشکل نداره
حالا من می خوام که در دی بی گرید ، فقط دو تا از فیلدها نمایش داده بشه ، نه همه فیلدها (روی دی بی گرید دابل کلید می کنیم و ستون به تعداد دلخواه اضافه می کنیم و برای هر ستون یک نام فیلد در نظر می گیریم)
مثلا برای همین فایل اگه بخوایم فقط فیلدهای name و num1 در دی بی گرید نمایش داده بشه دیگه کد مربوط به رنگی کردن کار نمی کنه
ممنون میشم
سلام. در حالت معمولی نمیتونه مشکلی داشته باشه ، احیانا شما table رو فیلتر می کنید ؟
اگه اینطوره که فیلترینگ رو در رویداد دابل کلیک کنسل کنید...
ضمنا اگه مشکلتون برطرف نشد ، خود کد رو آپلود کنید تا مشکلش رو رفع کنیم ...
کد شما فقط داره Num1 هایی رو که 8 هستند رو قرمز میکنه و هیچ رویداد دیگه ای براش تعریف نشده ...
دقیقا میخواید چیکار کنید ؟؟؟
مثلا میخواید با دابل کلیک کردن روی یک فیلد بر اساس اون فیلد فیلتر بشه ... ؟؟؟
این فایل رو نگاه کنید : [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
ضمنا برای دیدن کل اطلاعات روی dbgrid راست کلیک کنید ...
مسئله رو واضح مطرح نکرده بودید :P
*در این گونه مواقع به جای دابل کلیک کردن بر روی dbgrid بهتره که بر روی adotable دابل کلیک کرده و فیلدهای مربوطه رو به عنوان مثال همون دو تا فیلد رو انتخاب کنید .
اینم نمونه کار :
[برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
نقل قول از b_itman_b
با این روشی که مدیرجون گفت فقط یه مشکل میمونه اونم اینه که دیگه واسه جدول فوق همون دوتا کد فیلد رو میشناسه و بقیه فیلدهارو(احتمالا واسه گذاشتن شرط یا ...)نمیشناسه
مهندس جان قرار نیست کل پروژه ی شما با یک ADOtable , DataSource سر و کار داشته باشه ، و همچنین از روشهای ضعیف ویزاردی استفاده کنید ، چند تا ADOtable , DataSource متفاوت برای کارهای متفاوت طراحی کنید و فقط قبل از انجام عمل مورد نظر این کد را وارد نمایید :
کد:
کد:DBGrid1.DataSource:= DataSource1;
در یک پروژه ی بزرگ یه DataModule داریم که تمام ابزارهای کار با دیتابیس رو اونجا میزاریم ، و قرار نیست که روی فرم ما ابزاری رو بزاریم.اوکی ؟