ضع مؤشر الانتظار على زر داخل صندوق المجموعة


باستخدام VB 2008 اكسبرس.
لدي نموذج رئيسي يحتوي على عدد من صناديق المجموعة.

كما هو مطلوب، يمكنني بنجاح وضع مؤشر الانتظار على عنصر تحكم في النموذج الرئيسي غير موجود ضمن مربع مجموعة باستخدام أسطر التعليمات البرمجية التالية: (افترض أن Button1 ليس ضمن مربع مجموعة)

Cursor.Position = PointToScreen(Button1.Location)
المؤشر = Cursors.WaitCursor
Application.DoEvents()

ولكن، إذا تم وضع Button1 داخل مربع المجموعة (على سبيل المثال، GroupBox1)، لم أكتشف كيفية وضع المؤشر فوق هذا الزر. بدلاً من ذلك، يتم وضعه في موقع آخر في النموذج الرئيسي غير الموجود ضمن GroupBox1.

لقد قمت بتجربة الأشكال التالية دون نجاح:

Cursor.Position = PointToScreen(Button1.Location)، و
Cursor.Position = PointToScreen(GroupBox1.Button1.Location)

لا يتم إنشاء أي أخطاء ولكن لم يتم الحصول على النتيجة المرجوة.
أعتقد أن الأمر يتعلق بحقيقة أن خاصية موقع الزر الموجود داخل مربع المجموعة مرتبطة بالزاوية اليسرى العلوية لمربع المجموعة. لكن VB يضع المؤشر كما لو كانت خاصية موقع الزر مرتبطة بالزاوية اليسرى العلوية للنموذج الرئيسي.
سأكون ممتنًا للتوجيه – شكرًا، مايك

ما حاولت:

Cursor.Position = PointToScreen(Button1.Location), and
Cursor.Position = PointToScreen(GroupBox1.Button1.Location)

الحل 1

يكون موقع عنصر التحكم دائمًا مرتبطًا بحاويته: إذا كان لديك GroupBox في نموذج، وكان GroupBox يحتوي على زر، فإن myGroupBox.Location يرتبط بالزاوية العلوية اليسرى من myForm.ClientRectangle، ويكون myButton.Location نسبيًا إلى الزاوية العلوية اليسرى من myGroupBox.ClientRectangle.

لذلك، لتحديد موقع myButton بالنسبة إلى myForm، تحتاج إلى إضافة myButton.Location إلى myGroupBox.Location – وتكون النتيجة نسبة إلى الزاوية اليسرى العليا من Form.ClientArea. يمكنك بعد ذلك استخدام PointToScreen لتحديد مكان ارتباطه بالزاوية العلوية اليسرى من الشاشة الفعلية.

منطقي؟

الحل 2

المقبض الأصلي,
هذا منطقي تمامًا ويتماشى مع ما اعتقدت أنه قد يحدث.

ومع ذلك، أنا لست على دراية بكيفية تحقيق ذلك في التعليمات البرمجية.
هل تستطيع أن تعطيني مثالا؟
شكرًا.

コメント

タイトルとURLをコピーしました