Coloque el cursor de espera en un botón dentro de un cuadro de grupo

programación


Utilizando VB 2008 Express.
Tengo un formulario principal que tiene varios cuadros de grupo.

Si lo deseo, puedo colocar con éxito un cursor de espera en un control en el formulario principal que NO está dentro de un cuadro de grupo usando las siguientes líneas de código: (supongamos que el Botón1 NO está dentro de un cuadro de grupo)

Cursor.Posición = PointToScreen(Botón1.Ubicación)
Cursor = Cursores.WaitCursor
Aplicación.DoEvents()

Pero, si el Botón1 está ubicado dentro de un Cuadro de grupo (por ejemplo, Cuadro de grupo1), no he descubierto cómo colocar el cursor sobre ese botón. En lugar de eso, se coloca en alguna otra ubicación del formulario principal que no esté dentro de GroupBox1.

Probé variaciones de lo siguiente sin éxito:

Cursor.Position = PointToScreen(Button1.Location), y
Cursor.Posición = PointToScreen(GroupBox1.Button1.Location)

No se generan errores pero no se obtiene el resultado deseado.
Creo que tiene que ver con el hecho de que la propiedad de ubicación del botón dentro del cuadro de grupo es relativa a la esquina superior izquierda del cuadro de grupo. Pero VB coloca el cursor como si la propiedad de ubicación del botón fuera relativa a la esquina superior izquierda del formulario principal.
Agradecería orientación. Gracias, Mike.

Lo que he probado:

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

Solución 1

La ubicación de un control siempre es relativa a su contenedor: si tiene un GroupBox en un formulario y el GroupBox contiene un botón, entonces myGroupBox.Location es relativo a la esquina superior izquierda de myForm.ClientRectangle, y myButton.Location es relativo a la esquina superior izquierda de myGroupBox.ClientRectangle.

Entonces, para identificar la ubicación de myButton en relación con myForm, debe agregar myButton.Location a myGroupBox.Location; el resultado es relativo a la esquina superior izquierda de Form.ClientArea. Luego puede usar PointToScreen para identificar dónde está en relación con la esquina superior izquierda del monitor real.

¿Tener sentido?

Solución 2

mango original,
Eso tiene mucho sentido y está en la línea de lo que pensé que podría estar sucediendo.

Sin embargo, no estoy familiarizado con cómo lograrlo en código.
¿Puedes darme un ejemplo?
Gracias.

コメント

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