PDA

View Full Version : سوال: اضافه کردن فیلد به فیلد ادیتور clientdataset



reza_Nazem
چهارشنبه 18 دی 1387, 20:22 عصر
دوستان من یک Clientdataset را به یک DataProvider متصل کردم و DataProvider را نیز یه یک AdoQuery متصل کردم و نمام فیلد های Adoquery را به فیلد ادیتور ان اضافه کردم حالا می خوام در زمان اجرا تمام فیلد های موجود در فیلد ادیتور adoqoury را نیز به فیلد ادیتور ClientdataSet اضافه کنم و همچنین یک فیلد با مشخصات زیر
Name = Selected
FieldType = Boolean
Fieldkind = InternalCal
در زمان طراحی خیلی راحت می شه پیاده سازیش کرد ولی در زمان اجرا نه

Atlas_softWare
یک شنبه 22 دی 1387, 12:50 عصر
اگه می خواهید در زمان اجرا client شما که متصل به query شماست با تغییر query تغییر کند می تونید از این کد استفاده نمایید.
client.close;
query.sql.clear;
query.sql.add;
client.open;
اگه جوابم ربطی به سئوال شما نداره بیشتر توضیح بدید چون تمام برنامه های من با client است و می تونم example براتون بفرستم

reza_Nazem
یک شنبه 22 دی 1387, 18:18 عصر
ممنون از رهنمایت
ولی جواب سول من نبود . ببینید وقتی روی یک adoqury دابل کلیک کنید صفحه فیلد ادیتور باز می شه که میشه فیلد های کد sql را که در adoqury نوشته شده با آن اضافه کرد . حالا من می خوام در زمان اجرا ( نه در زمان طراحی ) تمام فیلد های درون فیلد ادیتور adouqury را به فیلد ادیتور Clientdadaset اضافه کنم .
این کار به راحتی در زمان طراحی امکان پذیر است یعنی با دابل کلیک کردن روی clientdataSet دقیقا فیلد های adoqury را می توان به آن اضافه کرد و پس از ان یک فیلد دیگر به مشخصاتی که در پست اول گفتم به ان اضافه کرد
متاسفانه در زمان اجرا با کد نویسی نتونستن انجامش بدم

reza_Nazem
سه شنبه 24 دی 1387, 08:01 صبح
کسی نمی دونه ؟ خودم هم هنوز پیداش نکردم

vcldeveloper
سه شنبه 24 دی 1387, 10:22 صبح
برای اضافه کردن فیلد به ClientDataset از خصوصیت FieldDefs آن استفاده میشه.
اون کاری که Designer دلفی انجام میده کاری نیست که با فراخوانی یک متد اتفاق بیافته! اگر بعد از اضافه کردن فیلدها به Fields Editor به سورس کد خودتان نگاه کنید، می بینید که به ازاء هر فیلد بانک اطلاعاتی، یک شی جدید به تعریف فرم (یا Data Module) شما اضافه شده. مثلا اگر فیلدی با نام MyField از نوع Integer داشته باشید، به تعریف فرم شما کدی شبیه به این اضافه شده:
AdoQuery1MyField: TIntegerField
اگر بخواید در Runtime همین کار را بکنید، تعریف کلاس فرم را نمی توانید تغییر بدید، پس باید یک لیست از اشیاء داشته باشید، و یکی یکی خصوصیات فیلدهای AdoQuery را بخوانید و به ازاء هر فیلد نمونه ایی از هر یک از کلاس های مشتق شده از TField ایجاد کنید، و خصوصیات آن را هم مقداردهی کنید. کار ساده ایی نخواهد بود!