PDA

View Full Version : مشکل در نوشتن کامپوننت



ebnsina
چهارشنبه 07 آذر 1386, 14:42 عصر
با سلام خدمت دوستان

من یک کامپوننت خاص برای کارم نوشتم که برای Dropdown آن ، یک Form می سازم و نمایش می دهم.

مشکل اینجاست که می خواهم مثل بقیه Dropdown List ها که بیرون آنها کلیک می شود و بسته می شوند من هم با کلیک موس در بیرون این فرم (هرجایی که باشد) فورم نمایش داده شده را ببندم.

قبلا عرض کنم که در تمام کدهای دلفی (شامل تمام کامپوننت هایی که Dropdown List دارند) را دیده ام ولی متوجه نشدم آنها چگونه به این Event یا Message دسترسی پیدا می کنند و Dropdown خودشون رو می بندند.

ضمنا نوشتن این کامپوننت با ارث بری از سایر Dropdown های دیگر عملی نبوده.

با تشکر فراوان
:لبخندساده:

A.Nemati
چهارشنبه 07 آذر 1386, 15:56 عصر
باید از message ویندوز استفاده کنید(CN_COMMAND). یک نمونه کامل رو می‌تونید در یونیت StdCtrls کلاس TCustomCombo مشاهده کنید. در این کلاس به سراغ روال CNCommand بروید.
در روال CNCommand، تمام Messageهای کنترلی چک می‌شن. چیزی که شما دنبالشین در این روال با عنوان CBN_CLOSEUP است. یعنی وقتی جایی بیرون از کامبو کلیک می‌کنید، مسیج CBN_CLOSEUP به CNCommand فرستاده می‌شه و در اونجا دلفی تابع CloseUp رو اجرا می‌کنه.
البته در مرحله بعدی و بلافاصله بعد از اون، CBN_KILLFOCUS به همین روال ارسال می‌شه تا فوکوس را برداره.

ebnsina
چهارشنبه 07 آذر 1386, 16:31 عصر
آیا برای استفاده از این Message حتما باید از کلاس های کومبو و ... ارث برده باشم یا نه ؟

A.Nemati
چهارشنبه 07 آذر 1386, 17:20 عصر
نه نیازی نیست.
به روالی که گفتم حتما یه سری بزن و با دقت اونو بررسی کن.

برای کسب کمی اطلاعات بیشتر به زبان ساده، یه سری به این آدرس بزن
http://www.delphipages.com/news/detaildocs.cfm?ID=123