PDA

View Full Version : تعیین طول و عرض فرم



AmirAmiri
دوشنبه 13 اسفند 1386, 23:45 عصر
سلام دوستان یه سوال دارم خواهش میکنم کمک کنید. من با وی بی 6 خیلی برنامه نویسی کردم ولی حالا که اومدم با دات نت کار میکنم میبینم خیلی فرق میکنه.
چطور تو وی بی دات نت 2005 میشه طول و عرض فرم رو خودمون تعیین کنیم؟ منظورم ScaleWidth و ScaleHeitgh هستش که تو وی بی 6 وجود داشت اما تو دات نت هر چی میگردم نیست.
اگه راهنمایی کنید خیلی ممنون میشم.:لبخندساده:

رضا عربلو
سه شنبه 14 اسفند 1386, 00:05 صبح
خوب اینجا دو پراپرتی Width و Height داریم. همچنین می توانید پراپرتی Size را ست کنید.

AmirAmiri
سه شنبه 14 اسفند 1386, 01:42 صبح
خوب اینجا دو پراپرتی Width و Height داریم. همچنین می توانید پراپرتی Size را ست کنید.
خودم اونو میدونم، اما من میخوام که به طور فرضی اندازه فرم رو مثلاً 1530 در نظر بگیره بدونه اینکه اندازه فرم تغییر کنه اگه با وی بی 6 کار کرده باشید متوجه منظورم میشید.

واضح تر بگم : زمانی که Width و Height فرم رو تغییر بدیم، اندازه فرم هم تغییر میکنه؛ مثلاً اگر اندازه فرم رو 1530 بدم، مسلماً فرممون از اندازه صفحه نمایش بزرگتر میشه. اما من میخوام که مثل وی بی 6 بتونم اندازه طول و عرض فرم رو بطور فرضی تعیین کنم (ScaleWidth و ScaleHeight) بدون اینکه اندازه واقعیه فرم تغییر کنه.
حالا اگر کسی اینو بلده لطفاً به من کمک کنه.:ناراحت:

AmirAmiri
سه شنبه 14 اسفند 1386, 23:12 عصر
تو رو خدا کمکم کنید خیلی لازم دارم.
ببینید من یه تاپیک با عنوان گرافیک در VB در بخش "مباحث مربوط به برنامه نویسی در VB" گذاشته بودم که اونجا آموزش طیف رنگها رو گذاشتم اما برای ساختن همون برنامه تو دات نت با مشکل مواجه شدم. مشکلم همونیه که گفتم (ScaleWidth و ScaleHeight). حالا از تمام عزیزانی که در این مورد اطلاعی دارن درخواست میکنم که به کمک من بشتابن. اگر کسی در این مود چیزی نمیدونه بگه تا من دیگه دنبالش نباشم.
مدیران محترم سایت، کمکم کنید... دوستان حرفه ای در وی بی دات نت کمکم کنید...

رضا عربلو
چهارشنبه 15 اسفند 1386, 18:45 عصر
خوب رولشن صفحه را پیدا کن (در همین سایت جستجو کنی پیدا می کنی) و بر اساس آن کارت را انجام بده.
در ضمن اگر می خواهی فرمت را ماکسمایز نشون بدهی پراپرتی WindowState نیز هست.

AmirAmiri
چهارشنبه 15 اسفند 1386, 19:29 عصر
نمی دونم چرا کسی منظوره منو متوجه نمیشه. منظورم خیلی واضحه من میخوام تابع یا دستور یا پراپرتیی رو به من معرفی کنید که مشابه پراپرتی ScaleWidth باشه. همین. حالا اگه کسی میدونه پاسخ بده. ممنون میشم.

aminva
پنج شنبه 16 اسفند 1386, 18:43 عصر
به چیزی که شما می خواید میگن رزولوشن
مثلا اگر رزولوشن کامپیوتر کاربر برنامه شما 640 در 480 بود صفحه برنامه از مانیتور بیرون نزنه..
درست متوجه شدم
پس دنبال کلمه رزلوشن در وی بی دات نت بگردید و اگر پیدا کردید منو هم حتما خبر دار کنید چون خودم دنبالش هستم
البته فعلا در برنامه خودم این کار رو با اجرای یک برنامه در استارت برنامم کردم که چک کنه رزولوشن سیستم چنده اگر فرق داشت تنظیم کنه
اما اگر کد یا کامپوننتی باشه مسلما کار با کلاس تره
پس منو هم بی خبر نذارید:چشمک:

peymannaji
پنج شنبه 16 اسفند 1386, 19:19 عصر
نمیدونم درست توجه شدم یا نه شما میخواهید یک سایز رو برای فرم در نظر بگیرید و اینکه کاربر نتونه فرم شما رو از اون اندازه ای که هست کوچیکتر یا بزرگتر کنه خوب برای اینکار شما چند راه دارید :

راه اول :خاصیت MaximumSize , MinimumSize را برابر سایز فعلی یا اندازه ای قرار دهید که میخواهید حداقل یا حداکثر نمایش فرم را داشته باشید .
راه دوم : خاصیت FormBorderStyle رو برابر FixedSingle قرار بدید و خاصیت MaxmizeBox را برابر False قرار بدید .

AmirAmiri
جمعه 17 اسفند 1386, 18:49 عصر
واقعاً که من چقدر در ارائه مسئله ضعیغم چون هیچکی منظوره منو متوجه نشد. خدایا خودت کمکم کن.
از دوباره میگم امیدوارم که کاملاً متوجه بشید.
در VB6 متدی به نام ScaleWidth و ScaleHeight وجود داشت. کاره این متدها چی بود؟
زمانی که ما میخواستیم اندازه فرممون رو با واحد اندازه گیریه ساختگیه خودمون تعیین کنیم از این متد استفاده میکردیم. بعنی چی؟
یعنی اینکه مثلاً فرم من در اندازه350 در 101 پیکسل بود(Width در Height) که توسط VB6 تعیین شده بود اما من که این واحد اندازه گیری رو قبول ندارم. مثلاً من میگم با واحد اندازه گیریه پوینت (Point) این فرم 243 در 75 هست که خوب اینم توسط خود VB6 از قبل تعریف شده. حالا آقای VB6 عزیز این امکان بسیار خوب رو به ما داده که ما بتونیم خودمون هم یک نوع واحد اندازه گیری فرضی برای فرم تعیین کنیم، به نام ScaleWidth و ScaleHeight . منظورت از واحد اندازه گیریه فرضی چیه؟
منظورم اینه که در حالی که سایز فرم در واحد پیکسل 350 در 101هست ما هم براش اندازه فرضی 1530 در 255 رو در واحد اندازه گیریه خودمون تعریف کنیم. چطور شد؟
ببینید اندازه فرم همون 350 در 101 هست ولی ما هم میتونیم از خودمون یک اندازه من در آوردی درست کنیم و ادعا کنیم که بر حسب واحد اندازه گیریه من، این فرم الان 1530 در 255 است. خوب VB6 مظلوم هم اینو قبول میکنه تا استعدادها شکوفا بشه و بچه ها نرن معتاد بشن. در این حالتی که گفته شد دو متد در VB6 وجود داره یکیشون خود سایز اصلی با واحد اندازهگیری VB6 هست (Width و Height) و اون یکی هم اندازه تعریف شده توسط کاربر با واحد اندازه گیریه تعریف شده هست (ScaleWidth و ScaleHeight) که هیچ ربطی به قبلی نداره. به طور کلی اگر تو Load برنامه کد زیر رو وارد کنم:



Private Sub Form_Load()
Me.ScaleWidth = 1530
Me.ScaleHeight = 255
End Sub



اندازه فرم هیچ تغییری نمیکنه بلکه اندازه با واحد اندازه گیری فرضی برای فرم تعریف میشه که در ScaleWidth و ScaleHeight قرار میگیره.
حالا من هر جا که به اندازه واقعی احتیاج داشته باشم از Width و Height استفاده میکنم و هر جا که به اندازه تعریف شده توسط خودم احتیاج دارم از ScaleWidth و ScaleHeight استفاده میکنم.



For X = 0 To Me.ScaleWidth
Print X
Next X



این برنامه اعداد صفر تا 1530 رو به ترتیب چاپ میکنه.

اما:


For X = 0 To Me.Width
Print X
Next X


اعداد 0 تا 350 رو چاپ میکنه. این در صورتی هست که واحد اندازه گیری پیش فرض برای فرم Pixel باشه. آخه VB6 واحد انداه گیری به نام تویپ داره (Twip).

حالا من میخوام بدونم این امکان بسیار خوب و کاربردی در VB.Net وجود داره یا نه. اگه وجود داره چیه؟ و اگه وجود نداره چرا وجود نداره و جایگزینی براش هست یا نه؟

امیدوارم که متوجه منظورم شده باشید و جواب درست رو بدید. ممنون از کمکتون.

aminva
جمعه 17 اسفند 1386, 21:08 عصر
با حرفهای شما من نتیجه گرفتم باید دوباره به vb6 برگردیم

peymannaji
جمعه 17 اسفند 1386, 22:02 عصر
عزیز دل برادر خیلی زود بریدی ... به هر حال سوئیچ کردن رو یک پلت فرم جدید کمی سختی داره اما به مرور راه میوفتی ...

AmirAmiri
شنبه 18 اسفند 1386, 16:14 عصر
سلام دوستان میخواستم بگم که این مسئله توسط خودم حل شد. بالاخره خواستن توانستنه دیگه.
بــــــــــــــله..... VB.Net این پراپرتی رو Support نمیکنه و به قول دوستمون باید برگردیم به VB6

من دیروز خیلی دنبال این موضوع بودم تا اینکه تو MSDN پیداش کردم ولی متاسفانه متوجه شدم که این قابلیت در VB.Net پشتیبانی نمیشه و این یکی از ضعف های VB.Net هست.
واقعا از چنین زبان برنامه نویسی قدرتمندی بعیده که این قابلیت خوب رو حذف کرده باشه و ما مجبور بشیم که به VB6 رجوع کنیم.
دیگه دنبال این پراپرتی نگردید. موفق و پیروز باشید.