PDA

View Full Version : Edit با قابلیت تشخیص تغییرات



اصغر (پآچ)
شنبه 29 تیر 1387, 23:02 عصر
سلام دوستان

من یه فرم دارم که توش نزدیک 30 تا Edit دارم حالا می خوام یه کامپوننت Edit بنویسم که خاصیت Change داشته باشه که با تغییر در اون Edit این خاصیت مقدار True و در غیر اینصورت False رو برگردونه اگه من بخوام متغییر تعریف کنم تعداد متغییر های boolean خیلی زیاد میشه من می خوام از این دستور برای فهمیدن این که کدوم Edit تغییر کرده که توی بانک ذخیره بشه استفاده کنم :


if (Sender as TEdit).Change then
AdoTable1.FieldByName('fieldname').AsString := (Sender as TEdit).Text;


راستی من هیچ اطلاعی از نوشتن کامپوننت ندارم دوستان اگه لطف کنن یه راهنمایی یا یه مقاله نوشتن کامپوننت معرفی کنن خیلی ممنون میشم.

موفق و موید باشید

Hsimple11
یک شنبه 30 تیر 1387, 00:34 صبح
با Components نمیشود؟

If (Components[j] as TEdit) then...

یا از رویداد Onchage استفاده کرد مثلا:


Edit1Change

در مورد ساخت کامپوننت :

اصغر (پآچ)
یک شنبه 30 تیر 1387, 01:13 صبح
دوست من
ببین من می گم اگه بخوام برای هر Edit یه متغییر تعریف کنم و موقع Post کردن بیام مقادیرشونو چک کنم هم زمان رو از دست می دم هم حافظه و هم کارایی و هم ابتکار!
از اون Copmponents هم چیزی نمی دونم
موفق و موید باشی

SYNDROME
یک شنبه 30 تیر 1387, 06:30 صبح
نیازی به تعریف متغیرهای بالایی نیست.
هر کامپونت برای خود یک Object جداگانه و مقادیر متفاوت است.
یک متغییر از نوع private در داخل Edit جدید خود بسازید و رویداد Change را Override کنید و در داخل آن مقدار متغییر را تغییر دهید.
فقط باید یک خاصیت قرار دهید که با فراخوانی آن مقدار متغییر به حالت پیش فرض برگردد که اگر خواستی خودم Edt را مقدار دهی سپس با فراخوانی تابع فوق مقدار متغییر به حالت تغییر نکرده برگردد.
کلمه مقاله را در سایت دلفی جستجو کنید.
آقا محمود یک تاپیک برای مقالات دلفی درست کرده که فکر کنم آنجا یک مقاله پیدا کنی.
موفق باشید

Hsimple11
یک شنبه 30 تیر 1387, 11:06 صبح
مقاله ساخت کامپوننت را در پست 2 گذاشتم.

موفق باشید.

اصغر (پآچ)
یک شنبه 30 تیر 1387, 23:51 عصر
سلام دوستان

من مشکلم حل شد اون اینه که خود Edit یه متغییر Boolean به اسم Modified داره که اگه تغییر کنه مقدار True رو بر می گردونه. این رو اینجا گفتم شاید کسی به مشکل من برخورده باشه مشکلش حل بشه از دوستای عزیزم که منو راهنمایی کردن ممنونم