View Full Version : سوال: تشخيص رويداد MouseDown در نقطه اي از دسكتاپ
nazanin_90
دوشنبه 18 آذر 1392, 15:20 عصر
سلام
آيا ميتوان در نقطه اي از دسكتاپ كه با تعيين مختصات اشاره گر موس بدست مي آيد ودر آن نقطه با موس كليك ميكنيم يك عمل خاص مثلاً يك پيغام صادر شود ؟ به عبارتي وقتي در يك نقطه از دسكتاپ كليك مي كنيم يك عمل خاص انجام شود.
فكر كنم جواب اين سوال خيلي سخت باشد و براي پاسخ به آن فقط حرفه ايها بايد دست بكار شوند.
با تشكر
RESMAILY
دوشنبه 18 آذر 1392, 19:08 عصر
به نام خدا
با سلام. حالا نه آنكه من هم حرفه اي (؟)هستم! ولي سوال شما ابهام دارد. خوب در ريداد ماوس داون پارامترهاي x ,y صفحه نمايش را مي توان به تابع ارسال نمود. ولي گمان نكنم اين جواب به درد شما بخورد. شما سوالتان را قدري دقيق تر بنويسيد و يا نمونه كارتان را بگذاريد. اما اجمالا مي شود از رويداد ماوس داون مربوط به فرم استفاده نماييد. حالا اين فرم تعدادي كنترل روي آن است و مقداري هم فضاي خالي دارد. طبعا يك نقطه خاص از فضاي خالي به درد كسي نمي خورد تا روي آن با راست كليك پيغام صادر كند. پس مي ماند كنترل ها. در بين كنترل ها با استفاده از تابع دروني Me.ActiveControl مي شود اغلب كنترل هارا براي اين كار به دام انداخت. ولي يك روش ديگر هم دوستان در تالار بطور كلي ارايه نموده اند. آن عبارت از اين است كه شما موقع باز شدن فرم يك متغير از جنس كنترل تعريف نمايي و با اسم گذاري مناسب براي كنترل هايتان يك رويداد بخصوص براي يك كنترل بخصوص تخصيص دهيد. يعني يك حلقه بنويسي و خلاص. براي فضاي خالي هم كه ديگر كاري ندارد. روش ديگري هم هست. قدري پيچيده تر و با استفاده از كلاس ماجول و اين حرف ها كه همان حرفه اي بايد توضيح دهند!
نمي دانم فهميدي چي به چي هست يا اينكه چي. به هرحال چون پرسيدي "آيا مي توان..." ، خواستم عرض كنم: آري، مي توان!
حالا مي گردم اگر كسي جواب بهتر نداد. يك نمونه برايت پيدا مي كنم. خوبه؟
linktaz
دوشنبه 18 آذر 1392, 20:49 عصر
به نام خدا
با سلام. حالا نه آنكه من هم حرفه اي (؟)هستم! ولي سوال شما ابهام دارد. خوب در ريداد ماوس داون پارامترهاي x ,y صفحه نمايش را مي توان به تابع ارسال نمود. ولي گمان نكنم اين جواب به درد شما بخورد. شما سوالتان را قدري دقيق تر بنويسيد و يا نمونه كارتان را بگذاريد. اما اجمالا مي شود از رويداد ماوس داون مربوط به فرم استفاده نماييد. حالا اين فرم تعدادي كنترل روي آن است و مقداري هم فضاي خالي دارد. طبعا يك نقطه خاص از فضاي خالي به درد كسي نمي خورد تا روي آن با راست كليك پيغام صادر كند. پس مي ماند كنترل ها. در بين كنترل ها با استفاده از تابع دروني Me.ActiveControl مي شود اغلب كنترل هارا براي اين كار به دام انداخت. ولي يك روش ديگر هم دوستان در تالار بطور كلي ارايه نموده اند. آن عبارت از اين است كه شما موقع باز شدن فرم يك متغير از جنس كنترل تعريف نمايي و با اسم گذاري مناسب براي كنترل هايتان يك رويداد بخصوص براي يك كنترل بخصوص تخصيص دهيد. يعني يك حلقه بنويسي و خلاص. براي فضاي خالي هم كه ديگر كاري ندارد. روش ديگري هم هست. قدري پيچيده تر و با استفاده از كلاس ماجول و اين حرف ها كه همان حرفه اي بايد توضيح دهند!
نمي دانم فهميدي چي به چي هست يا اينكه چي. به هرحال چون پرسيدي "آيا مي توان..." ، خواستم عرض كنم: آري، مي توان!
حالا مي گردم اگر كسي جواب بهتر نداد. يك نمونه برايت پيدا مي كنم. خوبه؟
شما چقد با دقت سوال ايشون رو خونديد.حتي روي فعل ها ها هم توجه كرديد:قهقهه:
من كه قانع شدم.:لبخندساده:
سپاسگزارم
nazanin_90
سه شنبه 19 آذر 1392, 18:45 عصر
سلام
با تشكر از حسن توجهتون
اين دفعه سعي مي كنم سوالم را واضح تر بپرسم : آيا دكمه close نوار عنوان اكسس (بر روي نوار آبي رنگ) داراي رويداد MouseDown يا click است يا نه ؟ در حالت عادي با كليك بر روي علامت ضربدر باتن close ديتابيس بسته ميشود ، حال ميخواهيم وقتي اشاره گر موس روي اين دكمه قرار گرفت و بر روي آن كليك كرديم (كه در اين حالت دو رويداد MouseDown و click از طريق اشاره گر موس بر روي آن صورت ميگيرد) ميتوانيم در يكي از اين رويدادها يك دستور مثلاً دستور صدور يك پيغام را صادر كنيم .
مطمئناً بديهي ترين جوابي كه به ذهن دوستان خطور مي كند اين است كه براي اينكار نياز به بدست آوردن رويداد دكمه فوق نداريم چرا؟ چون براي انجام اينكار ميتوانيم در رويداد unload يا close فرم اصلي برنامه دستور پيغام را بنويسيم كه در اینصورت، چون بسته شدن فرم قبل از بسته شدن ديتابيس صورت ميگيرد پس در نتيجه دستور صدور پيغام فوق قبل از بسته شدن ديتابيس انجام ميشود .
ولی بنا به دلايلي نميخواهم اين عمل از طريق رويداد unload يا close فرم انجام شود.و اينكه در سوال پست اول پرسيدم كه رويداد MouseDown در نقطه اي از دسكتاپ بدست آيد منظور من از آن نقطه همان مكان close ديتابيس بود ، فکر کردم شاید از این طریق به هدفم برسم
با تشكر
Abbas Amiri
سه شنبه 19 آذر 1392, 19:22 عصر
سلام
با تشكر از حسن توجهتون
اين دفعه سعي مي كنم سوالم را واضح تر بپرسم : آيا دكمه close نوار عنوان اكسس (بر روي نوار آبي رنگ) داراي رويداد MouseDown يا click است يا نه ؟ در حالت عادي با كليك بر روي علامت ضربدر باتن close ديتابيس بسته ميشود ، حال ميخواهيم وقتي اشاره گر موس روي اين دكمه قرار گرفت و بر روي آن كليك كرديم (كه در اين حالت دو رويداد MouseDown و click از طريق اشاره گر موس بر روي آن صورت ميگيرد) ميتوانيم در يكي از اين رويدادها يك دستور مثلاً دستور صدور يك پيغام را صادر كنيم .
مطمئناً بديهي ترين جوابي كه به ذهن دوستان خطور مي كند اين است كه براي اينكار نياز به بدست آوردن رويداد دكمه فوق نداريم چرا؟ چون براي انجام اينكار ميتوانيم در رويداد unload يا close فرم اصلي برنامه دستور پيغام را بنويسيم كه در اینصورت، چون بسته شدن فرم قبل از بسته شدن ديتابيس صورت ميگيرد پس در نتيجه دستور صدور پيغام فوق قبل از بسته شدن ديتابيس انجام ميشود .
ولی بنا به دلايلي نميخواهم اين عمل از طريق رويداد unload يا close فرم انجام شود.و اينكه در سوال پست اول پرسيدم كه رويداد MouseDown در نقطه اي از دسكتاپ بدست آيد منظور من از آن نقطه همان مكان close ديتابيس بود ، فکر کردم شاید از این طریق به هدفم برسم
با تشكر
چنین رویدادی نداریم و چاره کار همانست که خودتان نوشتید . برای جلوگیری از زدن دکمه Close اکسس هم می توانیدبا کدهایی که از توابع api استفاده میکند آنرا غیر فعال کنید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.