View Full Version : قرار گرفتن دو كنترل روي هم
iamehsan56
سه شنبه 26 شهریور 1387, 07:53 صبح
سلام
من يه دو تا كنترل run time ايجاد مي كنم . يكي يه دكمه از نوع TJVNavPanelButton كه از كنترلاي JVCL هستش ويكي ديگه يه PANEL هست از نوع TAdvSmooth Panel كه از كنترلاي TMS هستش . من مي خوام دكمه رو روي panel قرار بدم (نه اينكه توي panel قرار داشته باشه ) . اما اين دكمه هميشه پشت panel قرار مي گيره . وقتي يه button معمولي مي ذارم مي آد روي panel اما اين دكمه نمي دونم داره چطور عمل مي كنه .
لطفا راهنماييم كنيد
ممنون
vcldeveloper
سه شنبه 26 شهریور 1387, 08:50 صبح
برای اینکه این کنترل هم مثل TLabe ، که قبلا درباره اش پرسیده بودید، از TGraphicControl مشتق میشه:
http://barnamenevis.org/forum/showthread.php?t=121314
iamehsan56
سه شنبه 26 شهریور 1387, 10:34 صبح
ممنون استاد
حالا چه بايد كرد . راه حلش چيه ؟
Hsimple11
سه شنبه 26 شهریور 1387, 11:08 صبح
کاریش نمیشه کرد. باید اساسا یا روش خود را عوض کنید یا یک ترفندی بکار برید. مثلا یک کنترل را بر روی یک کنترل دیگر سوار کنید.
اصغر (پآچ)
سه شنبه 26 شهریور 1387, 11:54 صبح
سلام دوست من
اگه موقع طراحی DesignTime بود می تونستی روی کنترلت کلیک راست کنی و از منوی Control گزینه Send back یا Send front رو انتخاب کنی اما درزمان طراحی نمی دونم چطور میشه این گزینه رو فعال کرد.
اگه اولویت ایجادشون رو جابه جا کنی بازم تغییری توی Parent اونها داده نمی شه؟
بازم ببخشید که نتونستم کمکت کنم
موفق و موید باشی
ghabil
سه شنبه 26 شهریور 1387, 12:19 عصر
من اصلا هیچ تصوری ندارم چرا میخوای این کار رو بکنی ولی یعنی Panel1.SendToBack یا Button1.BringToFront جواب نمیده؟
iamehsan56
سه شنبه 26 شهریور 1387, 12:35 عصر
نه با Bring , جواب نميده . اين كه چرا مي خوام اين كارو بكنم واسه اينكه دارم يه محيط طراحي مي نويسم كه user اين كنترلها انتخاب مي كنه و تو صفحه مي ذاره . مي خوام بتونه روي panel ]چيزي بذاره فارغ از اين كه عضو panel بشه
ghabil
سه شنبه 26 شهریور 1387, 23:55 عصر
بنظر میاد مشکل از نحوه پیاده سازی Buttenت باشه ، به هر حال تا کدش رو نبینیم نمیشه درست گفت، راه حل خیلی موقتی که بنظرم میرسه اینه که Buttonت رو توی یک Pannel جدا بسازی بطوری که Button کل پنل رو گرفته باشه (یعنی با Align = Client و اندازه Panel اندازه Button باشه)
این سوال رو هم برای این میپرسم که شاید بشه از اینور یک راه حلی پیدا کرد : حالا اگر Button رو Parentش رو بزاری Panel چی میشه؟ کاربر که نیمفهمه پرپنت چی ست شده فقط میبینه باتن روی پنله.
vcldeveloper
چهارشنبه 27 شهریور 1387, 01:35 صبح
ولی یعنی Panel1.SendToBack یا Button1.BringToFront جواب نمیده؟
نه، چون از TGraphicControl مشتق شده و وظیفه رسمش برعهده کلاس Parentاش هست. این نوع کنترل ها نمی تونند روی کنترل هایی که برای خودشون Window مستقل دارند (مثل کامپوننت های مشتق شده از TWinControl) رسم بشند.
راه حلش همون هست که دکمه را روی یک پنل بزاریم، بعد پنل مربوط به دکمه را روی پنل قبلی قرار بدیم، چون در اون صورت parent اون کامپوننت یک Panel هست و از TWinControl مشتق شده.
iamehsan56
چهارشنبه 27 شهریور 1387, 08:43 صبح
آقاي كشاورز درست مي گن .
منم همين كارو كردم . يعني اجبارا انداختمش تو panel يا به عبارتي parent اونو panel قرار دادم
ممنون از راهنمايي
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.