PDA

View Full Version : سوال: کپی کردن یه کامپوننت و کپی شدن همه event ها ؟



migrant
دوشنبه 28 مرداد 1387, 15:04 عصر
سلام
من مثلا وقتی یه edit box رو کپی و در همون فرم past می کنم تمام event های این دو یکی میشه و با تغییر یکی دیگری هم تغییر می کنه . مثل اینکه برای کامپوننت جدید event ها کپی نمیشه . . . .
علت چیه ؟؟؟؟؟

s.mostafa.rahmani
دوشنبه 28 مرداد 1387, 15:46 عصر
شما وقتي يك كنترل رو روي فرم كپي، پيست مي‌كني؛ تمام رويدادهاي كنترل جديد به همون رويدادهاي كنترل قبلي متصله.
بايد كنترل جديد رو در فرم انتخاب كنيد، بعد در Object Inspector (با F11 باز يا فعال مي‌شه) در تب Events اسم اون رويدادها رو (مثلاً OnClick) پاك كنيد و با دوباركليك در همان كادر رويداد (كه پاكش كرديد) يك رويداد جديد ايجاد مي‌شه كه مي‌تونيد توش كد جديدتون رو بنويسيد بدون اين كه كد رويداد كنترل قبلي تغيير كنه.
مثال: شما يك دكمه به نام Button1 داشتيد با رويداد Button1Click حالا اون رو كپي پيست كرديد، اگه دكمه دوم يعني Button2 رو انتخاب كنيد مي‌بينيد كه در مقابل رويداد OnClick اون در Object Inspector نوشته Button1Click اگه داخل كادر رو پاك كنيد و دوباركليك كنيد مي‌بينيد كه رويدادي كه ساخته مي‌شه اسمش هست Button2Click.
موفق باشيد. :-)

vcldeveloper
پنج شنبه 31 مرداد 1387, 02:44 صبح
مثل اینکه برای کامپوننت جدید event ها کپی نمیشه . . . .
علت چیه ؟
نه کپی نمیشه. علتش هم ساده هست. یک Event نوع خاصی از داده هست که به یک متد اشاره میکنه - در واقع یک Event مشتکل از دو اشاره گر هست که بحث به این تاپیک مربوط نمیشه - وقتی روی یک Event دابل کلیک می کنید، دلفی یک متد جدید متناسب با اون Event درست میکنه، سپس آن Event را به این متد متصل میکنه. وقتی کامپوننتی را Copy\Paste می کنید، آدرس متد ذخیره شده در Event هم Copy\Paste می شود، پس Event های کامپوننت جدید هم به همان متدهایی که Eventهای کامپوننت اصلی بهشان متصل بودند، متصل می شوند (اشاره می کنند).