PDA

View Full Version : مشکل با خاصیت Anchors کنترل ها



shedayat
سه شنبه 13 تیر 1391, 14:38 عصر
سلام.
من چند تا کنترل رو فرمم گذاشتم رو خاصیت Anchors اونا رو روی تنظیم کردم.
مشکل من اینجاست که هنگام ریسایز کردن فرم کنترل ها به خوبی تغییر اندازه پیدا می کنن ولی وقتی از یه اندازه ای بزرگتر می شن، چون که کنترل ها کنار هم چیده شدن برا همین روی هم قرار می گیرن و همدیگر رو می پوشونند. حالا من می خواستم ببینم که راهی وجود نداره که فاصله ی بین کنترل ها حفظ بشه یا یه کنترلی اندازش تا یه حدی رسید دیگه بزرگتر نشه (کنترل، نه فرم!) .
ممنون.

SAASTN
سه شنبه 13 تیر 1391, 14:58 عصر
از Align و AlignWithMargins و Margins استفاده کن.

shedayat
سه شنبه 13 تیر 1391, 18:21 عصر
راستش من دقیق منظورتون رو متوجه نشدم.
می شه این راه حلی رو که فرمودید رو تو این برنامه نمونه پیاده سازی کنید؟
ممنون.

SAASTN
سه شنبه 13 تیر 1391, 23:07 عصر
برای این باید توی OnResize فرم کد بنویسی. یه نمونه برات گذاشتم، باید Uses ها رو با Uses های برنامه خودت عوض کنی.

یه کنترلی اندازش تا یه حدی رسید دیگه بزرگتر نشه
باید از Constraints استفاده کنی.

shedayat
سه شنبه 13 تیر 1391, 23:25 عصر
خیلی ممنون از پاسختون.
ولی این فقط یه مثال کوچیک بود. اگه روی یه فرمی حدود 20 تا Edit و Label داشته باشیم و با دکمه ها و کنترهای دیگه فک نکنم دیگه گذاشتن Panel کار درستی باشه.
راستی یه سوال:
ClientWidth چیه؟

SAASTN
چهارشنبه 14 تیر 1391, 00:07 صبح
ولی این فقط یه مثال کوچیک بود. اگه روی یه فرمی حدود 20 تا Edit و Label داشته باشیم و با دکمه ها و کنترهای دیگه فک نکنم دیگه گذاشتن Panel کار درستی باشه.
اشکالی نداره. به نوعی میشه گفت کاربرد Panel همینه! از GroupBox هم می تونی استفاده کنی تا کنترل هات رو بر اساس کاربردشون موضوع بندی کنی.

ClientWidth چیه؟
به محدوده قابل استفاده فرم، که میشه کنترلای دیگه روش گذاشت محدوده Client می گن. ClientWidth عرض این محدودست. مثلا عرض فرم برابر ClientWidth به علاوه ضخامت دوتا Border های اطرافشه.

shedayat
چهارشنبه 14 تیر 1391, 16:43 عصر
خیلی ممنون. حل شد.
ولی یه سوال دیگه: چطور می تونم دو تا کنترل رو تو زمان طراحی Group کنم که با حرکت دادن یک کنترل کنترل همراهش هم حرکت کنه؟ (یه چیزی مثل Group کردن اشیاد در برنامه Word)

SAASTN
جمعه 16 تیر 1391, 23:20 عصر
آقا شرمنده که دیر جواب می دم.

چطور می تونم دو تا کنترل رو تو زمان طراحی Group کنم که با حرکت دادن یک کنترل کنترل همراهش هم حرکت کنه؟ (یه چیزی مثل Group کردن اشیاد در برنامه Word)
تا جایی که من اطلاع دارم چنین قابلیتی نه در زمان طراحی فرم ها نه در زمان اجرای برنامه وجود نداره. برای این منظور بهترین راه حل استفاده از همون Panel هست، به این صورت که کنترلهایی که می خواید با هم جابجا بشن رو توی یک پنل قرار بدید و بجای جابجا کردن انفرادی هر کدوم از کنترلها، کل پنل رو جابجا کنید.
راه دیگه استفاده از کد نویسی هست، بسته به نوع کنترلها و همینطور روشی که برای جابجایی اونها استفاده کردید می تونیید بعد از جابجا شدن کنترل مورد نظر بقیه کنترلها رو هم همراه با اون جابجا کنید. اگر این ترکیب از کنترلها به دفعات و در بخش های مختلف برنامه استفاده میشن بهتره یه کامپوننت ترکیبی ایجاد کنید تا نیازی به تکرار کدهای مربوط به جابجایی نباشه.

shedayat
جمعه 16 تیر 1391, 23:27 عصر
آقا شرمنده که دیر جواب می دم.
برای این منظور بهترین راه حل استفاده از همون Panel هست،
خواهش می کنم داداش. دستت درد نکنه از اینکه جواب می دی.
راستش من هم خواستم از پنل استفاده کنم ولی با خودم فکر کردم که پنل حجم برنامه رو زیاد می کنه و در نتیجه سرعت برنامه کمتر می شه. برا همین از پنل استفاده نکردم.
در مورد نوشتن کد باید بگم که من می خواستم در زمان طراحی این امکان وجود داشته باشه.
ممنون.