View Full Version : سوال: نسبت دهی مقادیر به خصوصیت Options کامپوننت EhLibGrid
hadisalahi2
چهارشنبه 03 آذر 1389, 12:06 عصر
سلام به همگی دوستان
چطوری می تونم مقادیر خاصیت Options رو در داخل کد بهش نسبت بدم؟
من با دستور زیر این کار رو انجام میدم ولی پیغام خطا میده
SearchGrid.Options:=[dgTitles,dgIndicator,dgColumnResize,dgColLines,dgR owLines,dgTabs,dgConfirmDelete,dgCancelOnExit,dgMu ltiSelect]
خطا
E2010 Incompatible types: 'TDBGridOptions' and 'Set'
vcldeveloper
پنج شنبه 04 آذر 1389, 00:31 صبح
این به خاطر تداخل نامگذاری Type ها در یونیت مربوط به DBGridEh با یونیت مربوطه در VCL هست. نوع داده TDBGridOption هم توسط EhLib تعریف شده، و هم توسط VCL. شما باید نامگذاری را بصورت fully qualified انجام بدید، تا مشخص بشه از کدوم TDBGridOption استفاده می کنید:
DBGridEh1.Options := [DBGridEh.TDBGridOption.dgEditing, DBGridEh.TDBGridOption.dgTitles];
hadisalahi2
پنج شنبه 04 آذر 1389, 12:00 عصر
این به خاطر تداخل نامگذاری Type ها در یونیت مربوط به DBGridEh با یونیت مربوطه در VCL هست. نوع داده TDBGridOption هم توسط EhLib تعریف شده، و هم توسط VCL. شما باید نامگذاری را بصورت fully qualified انجام بدید، تا مشخص بشه از کدوم TDBGridOption استفاده می کنید:
DBGridEh1.Options := [DBGridEh.TDBGridOption.dgEditing, DBGridEh.TDBGridOption.dgTitles];
آقای کشاورز من همین کد رو نوشتم ولی باز هم خطا میده البته خطای اون به صورت زیره :
[DCC Error] E2018 Record, object or class type required
البته خودم فکر میکنم باید یونیت یا یک نوع داده خاص به پروژه اضافه بشه ولی نمی دونم چی؟
به نظر شما و دوستان باید چی کار کنم؟
vcldeveloper
پنج شنبه 04 آذر 1389, 17:06 عصر
باید یونیت DBGridEh در لیست uses باشه.
hadisalahi2
پنج شنبه 04 آذر 1389, 17:22 عصر
باید یونیت DBGridEh در لیست uses باشه.
یونیتی که فرمودید در قسمت Uses هست ولی باز هم پیغام خطا میده.
hadisalahi2
جمعه 05 آذر 1389, 11:31 صبح
آقای کشاورز مشکل من هنوز حل نشده میشه لطف کنید یک کم راهنمایی کنید.
vcldeveloper
جمعه 05 آذر 1389, 23:05 عصر
آقای کشاورز مشکل من هنوز حل نشده میشه لطف کنید یک کم راهنمایی کنید.
چه نسخه ایی از دلفی را استفاده می کنید؟ من کد بالا را در دلفی 2010 تست کردم و بدون هیچ مشکلی کامپایل شد. در سایر نسخه های دلفی هم نباید مشکلی داشته باشه.
hadisalahi2
شنبه 06 آذر 1389, 09:46 صبح
من از دلفی 2007 استفاده میکنم و از نسخه 5 EHlib استفاده میکنم
vcldeveloper
شنبه 06 آذر 1389, 15:39 عصر
من دلفی 2007 ندارم. برید تست کنید که در فایل DBGridEh.pas نوع داده TDBGridOption تعریف شده باشه، و مقادیرش هم همین هایی باشه که در پست ذکر شدند.
hadisalahi2
شنبه 06 آذر 1389, 17:32 عصر
داخل یونیتی رو که فرمودید رفتم و داده های یاد شده توی فایل تعریف شده بود .
تو تا پروسیجر داخل این یونیت پیدا کردم به نظر شما این پروسیجر برای مقدار دهی به این خاصیت نیست؟
procedure SetOptions(Value: TDBGridOptions);
procedure SetOptionsEh(const Value: TDBGridEhOptions);
Felony
شنبه 06 آذر 1389, 20:29 عصر
داخل یونیتی رو که فرمودید رفتم و داده های یاد شده توی فایل تعریف شده بود .
تو تا پروسیجر داخل این یونیت پیدا کردم به نظر شما این پروسیجر برای مقدار دهی به این خاصیت نیست؟
procedure SetOptions(Value: TDBGridOptions);
procedure SetOptionsEh(const Value: TDBGridEhOptions);
از اسم و پارامتر هایی که دریافت میکنن اینطور به نظر میاد ، تستش کار سختی نیست !!!
vcldeveloper
یک شنبه 07 آذر 1389, 00:19 صبح
داخل یونیتی رو که فرمودید رفتم و داده های یاد شده توی فایل تعریف شده بود .
فکر می کنم در نسخه های قدیمی تر از 2009، enum ها بدون ذکر نوع Type شان در یونیت قابل دسترس هستند. در این صورت، باید TDBGridOption را از کد فوق حذف کنید، و فقط نام یونیت و نام مقدار enum مربوطه را درج کنید، مثلا:
DBGridEh.dgEditing
hadisalahi2
یک شنبه 07 آذر 1389, 09:27 صبح
بله درسته باید بدون TDBGridOption نوشته بشه.
به نظر شما اون تو تا پروسیجر چه کاری انجام میده؟
h.ebrahimi
یک شنبه 27 مرداد 1392, 08:59 صبح
در uses ها اگر هم از گرید دلفی و هم Ehlib باشه این پیغام خطارو میده.
یعنی یونیت های Grids , DbGrids رو از لیست uses ها حذف کنید و فقط یونیت های GridsEh, DBGridEh در uses باشه :)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.