ورود

View Full Version : مشکل در افزودن item غیر ویژوال در زمان Design



مصطفی ساتکی
چهارشنبه 22 مهر 1388, 18:41 عصر
سلام دوستان
می خواستم کامپوننتی طراحی کنم که در حالت Design بشه بهش Item غیر ویژال اضافه کرد مثلا TAction بجای Item اضافه کنیم

vcldeveloper
چهارشنبه 22 مهر 1388, 21:15 عصر
خب، مشکل چی هست؟

مصطفی ساتکی
پنج شنبه 23 مهر 1388, 10:04 صبح
مي خوام كامپوننتي بنويسم كه زماني كه بروي فرم قرار مي گيرد 2 تا اكشن باهاش باشه كه توي كلاس فرم هم اضافه بشه تا بقيه كامپوننتها هم بتونن از اكشنهاش استفاده كنن. تو نمايش پنل structurte هم اكشن ها زير مجموعه كامپوننت من قرار بگيرن مثل ايتم هاي popupmenu

vcldeveloper
پنج شنبه 23 مهر 1388, 15:25 عصر
اگر قرار هست Action دلفی باشند، و سایر کامپوننت ها هم از آنها استفاده کنند، نمیشه فقط در زمانی که کامپوننت شما روی فرم قرار گرفت، بوجود بیان، بلکه باید در مرحله نصب کامپوننت، کامپوننت شما با استفاده از Tools API دلفی، این Actionها را در IDE دلفی Register کنه، تا در برنامه های مختلف قابل دسترس باشند. برای کار با Tools API دلفی مستندات رسمی وجود نداره، می تونید سایت هایی که در این زمینه مطالبی نوشتند را جستجو کنید. همچنین می تونید سورس کد مجموعه کامپوننت های اوپن سورسی مثل JVCL را که در IDE دلفی Action رجیستر می کنند، بررسی کنید، و ببینید با چه کدی این کار را انجام دادند، و چطور از Tools API استفاده کردند.

البته با توجه به توضیحاتی که در پست شماره 2 دادید، احساس می کنم، در مفهوم Action در دلفی مشکل دارید، و کاری که شما میخواید انجام بدید نباید ربط چندانی به Action داشته باشه.

فکر کنم بهتر باشه بپرسیم، دقیقا هدفتون از این کار چی هست؟ چون اینطوری بهتر میشه متوجه شد که چه چیزی مدنظرتان بود که به Action رسیدید.

PersPhoenix
پنج شنبه 23 مهر 1388, 16:15 عصر
با سلام
فكر كنم منظور Delphi_CAT كامپوننتي همانند TpopupMenu ولي با ايتم هايي از نوع TAction بوده. من با ToolsApi دلفي كار كردم تا اونجا كه فقط اشيا ويژوال رو تونستم به owner كامپوننت( بطور مثال TForm) در زمان طراحي اضافه كنم.
فكر كنم DelphiCat مي خواد كامپوننتي بنويسه كه مثل يك ActionContainer باشه كه ساير كامپوننتهاي دلفي بتونن از اكشنهاي Customize شده اون استفاده كنن
RegisterAction فقط اكشن ها رو توي ActionList پيش فرض دلفي اضافه مي كنه كه البته به نوعي اينكاريرو كه DelphiCat مي خواد انجام بده رو پوشش مي ده ولي بايد حتماً در زمان طراحي توسط كاربر ايجاد بشه و اتوماتيك بعد از گذاشتن كاپوننت ساخته نمي شه.

براي حل مساله فكر كنم بايد RegisterCompoenetEditor كامپوننت Tpopmenu يا Tmainmenu يا TactionManager رو ديد كه من هرچي تو سورس دلفي گشتم پيدا نكردم.
سورس كامپوننتهاي مثل TMS , DevExpress , fast report ,...رو گشتم ولي همچين موردي نداره فكر كنم پيدا كردن راه حل جالب باشه ....

مصطفی ساتکی
چهارشنبه 29 مهر 1388, 21:32 عصر
سلام به آقاي كشاورز.فكر نكنم Action چيز خاصي باشه كه آدم با اون به مشكل بر بخوره.ما عادت كرديم به همه دكترا هم وقتي بلد نباشن نمي گن نمي دونيم چنتا قرص جهت خنده مي نويسن.جواب سوال من كلاسTDesignWindow از يونيت DesignWindows بود

vcldeveloper
پنج شنبه 30 مهر 1388, 00:59 صبح
فكر نكنم Action چيز خاصي باشه كه آدم با اون به مشكل بر بخوره.
اتفاقا خیلی از برنامه نویسان دلفی یا نمیدونند Action چی هست، یا نمیدونند هدف از ایجاد آن و کاربرد آن چی هست.


جواب سوال من كلاسTDesignWindow از يونيت DesignWindows بود
جدا؟! احیانا تصور نکردید که این یونیت از آسمان نازل شده؟ این یکی از یونیت های ToolsAPI دلفی هست.