مشاهده نسخه کامل
: چسباندن فرم به گوشه های اسکرین #C
BILLY_Mgs
30-08-2009, 02:02
سلام.
اگه دیده باشید بعضی از برنامه ها وقتی داریم اونا رو Move میکنیم ، وقتی به گوشه های Screen نزدیک میشند یک هو میچسبن به گوشه ها . (مثل Jet Audio)
اگر هم تاحالا چنین برنامه ای ندیدید یه کم توضیح میدم تا دقیقا منظورم رو برسونم :
وقتی Move میکنیم و زمانی که سمت چپ فرم به نقطه ی X=0 توی Screen نزدیک میشه یک دفه فرم به نقطه x=0 می چسبه ( کشانده میشه!)
و برای اینکه از اونجا بکنیم باید مقدار بیشتری move به سمت مخالف بکنیم .
میخواستم ببینم چه طوری میتونم تو برنامم چنین خاصیتی رو اضافه کنم؟!؟?؟?
مرسی :40::11:
سلام
شما همینطوری میتوانید این کارها را با خصایص عادی Form انجام دهید و رویداد LocationChanged را کدنویسی کنید.
ولی یک مطلب وجود دارد.
در ویندوز یک مفهومی به نام AppBar وجود دارد که خیلی شبیه Dock در دات نت است ولی روی صفحه نمایش Desktop اتفاق می افتد.
من یک پنج هزارسالی میشود که Jet Audio و Winap و... و... و سایر برنامه های مشابه را نصب نکردم و ندیدم و نمیدانم برنامه شما شامل این مفهوم میشود یا خیر.
برنامه ای که AppBar شود، (مثل Dock در دات نت) صفحه Desktop را کوچک میکند و کامل هم به ان سمت میچسبد.
یعنی اگر در این حالت برنامه های دیگر، (MyComputer یا هر برنامه دیگری) را Max کنید، در محدوده باقی مانده Max میشود و روی فرم AppBar را نخواهد گرفت.
=====
1- پس اگر برنامه شما AppBar نیست میتوانید از رویداد رویداد LocationChanged استفاده کنید.
2- در غیر این صورت باید از API زیر استفاده کنید:
SHAppBarMessage
برای توضیحات بیشتر به MSDN مراجعه کنید:
msdn.microsoft.com/en-us/library/bb776821(VS.85).aspx
موفق باشید.
BILLY_Mgs
31-08-2009, 16:40
نه مانند AppBar نیست
یک فرم سادست که وقتی کاربر اونو move میکنه و location اش تغییر میکنه ، زمانی که با location.X < 20 میرسه فرم تغییر location میده به Location.X = 0
من این کدو رو نوشتم ولی کمی اشکال داره :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ولی مشکل اینجاست ! اگه ما form را به طرف مخالف ه X= 0 یعنی به سمت راست بکشیم ، تا زمانی که X < 20 هست فرم با هر 1 مرتبه تغییر X برمیگرده به 0 یعنی هی تکون میخوره و ثابت نیست تا زمانی که از 20 نگذره .
من یه فکری به سرم زد که اگه بشه حساب کرد زمانی که MouseDown میشه روی فرم و فرم میخواد move بشه تا زمانی که نشانگر mouse تا 20X از جایی که mousedown شده تغییر نکرده فرم تکون نخوره!
مرسی اگه راهنمایی کنین همین کارو انجام بدم.
BILLY_Mgs
07-09-2009, 15:19
دوستان این سوال من بدون جواب موندش!
چطور میشه زمانی که روی فرم عمل mouse down میشه حساب کرد چه مقدار x , y موس از جایی که mouse down کرده تغییر کرده ؟
sari-1369
07-09-2009, 17:16
اون کدی که میخوای واست نوشتم ، فقط تنها اشکالش اینه که به VB هستش . ( یکی از دوستان زحمت تبدیلشو بکشه )
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
sari-1369
07-09-2009, 17:22
با یه نرم افزار تبدیلش کردم ، جوابش شد این :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
BILLY_Mgs
08-09-2009, 01:10
دوست عزیز خیلی ممنون . مشکل چسبیدن به گوشه های اسکرین تا حدودی حل شد دستتون درد
ولی اگه امکانش هست خودتان 1 بار این را تست کنین تا مشکلاتشو ببینید .
مشکلش اینه که زمانی که توی کمتر از 20 هست فرم دائم تکون میخوره .
باید قسمتی به کد اضافه کنیم که تا زمانی که زیره 20 هست ، تا زمانی که موس بیشتر از 20 تا تغییر مکان نداده تکون نخوره.
بازم سوالمو که تو پست 4 بود تکرار میکنم :
چطور میشه زمانی که روی فرم عمل mouse down میشه حساب کرد چه مقدار x , y موس از جایی که mouse down کرده تغییر کرده ؟
مرسی
sari-1369
08-09-2009, 17:32
بدست آوردن و ذخیره کردن مختصات مکانی که در آن عمل mouse down رخ داده است :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
بدست آوردن اختلاف مکان قبلی و فعلی :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
من نمیدونم اینو برای چی میخوای ، ولی اگر برای حرکت دادن فرم میخوای کدش اینه :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
----------------------------------------------------------------------------
تو کد قبلی که واست گزاشته بودم ، فرم نمیتونست از صفحه نمایش خارج بشه ، تو این کد جدید اصلاح شده .
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
sari-1369
08-09-2009, 17:38
مشکلش اینه که زمانی که توی کمتر از 20 هست فرم دائم تکون میخوره .
مرسی
درسته ، حق با شماست ، سعیمو میکنم درستش کنم . فعلا
BILLY_Mgs
09-09-2009, 01:38
من نمیدونم اینو برای چی میخوای ، ولی اگر برای حرکت دادن فرم میخوای
مثلا زمانی که فرم به سمت چپ اسکرین چسبیده و ما می خوایم اونو به سمت راست بکشیم برای اینکه تا زمانی که تا >20 هست فرم دائم تکون نخوره move شدن رو غیر فعال کنیم و زمانی که ما از 20 درجه بیشتر موس رو به سمت راست بردیم اون موقع move شدن فعال بشه .
با این کار از تکون خوردن دائم فرم جلوگیری کنیم.
سلام
... یعنی هی تکون میخوره ...
بالاخره تازه امشب کمی وقت کردم و روی مشکل کار کردم ...
کد فعلی دستورات تغییر محل خود دات نت را از کار انداخته و خودش اینکار را انجام میدهد.
نتیجه آن است که میتوان قبل از اعمال محل جدید این عدد را اصلاح کرد.
(نه اینکه فرم حرکت کند و بعد تازه ما اصلاحش کنیم.)
این کد را تست کنید و در صورت نیاز بهینه و یا با شرایط خودتان اصلاح کنید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
(بخش align code جهت تطبیق با شرایط خودتان است)
موفق باشید.
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.