SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: graciela en Miércoles 29 de Enero de 2003, 05:10
-
Alguien me puede ayudar con las lineas sgtes dado que segun la ayuda del VB puedo hacer, dentro de un formulario, un picturebox desplazable dentro de otro picturebox pero el mismo no funciona.
Cual es el error que cometo? como tienen que estar seleccionadas las opciones autoredraw, autosize, de cada uno de los controles?????
El evento Form_Load del formulario se utiliza para establecer el modo de escala, ajustar el tamaño del cuadro de imagen secundario dentro del cuadro de imagen primario, colocar y ajustar el tamaño de las barras de desplazamiento horizontal y vertical y, después, cargar un gráfico de mapa de bits. Agregue el código siguiente al procedimiento de evento Form_Load del formulario:
Private Sub Form_Load()
' Establece ScaleMode a píxeles.
Form1.ScaleMode = vbPixels
Picture1.ScaleMode = vbPixels
' Autosize se establece a True para que los bordes
' de Picture2 se ' expandan al tamaño del
' mapa de bits real.
Picture2.AutoSize = True
' Establece el BorderStyle de cada cuadro ' de imagen a Ninguno.
Picture1.BorderStyle = 0
Picture2.BorderStyle = 0
' Carga el mapa de bits.
Picture2.Picture = _
LoadPicture("c:WindowsWinlogo.bmp")
' Inicializa la ubicación de ambas imágenes.
Picture1.Move 0, 0, ScaleWidth - VScroll1.Width, _
ScaleHeight - HScroll1.Height
Picture2.Move 0, 0
' Coloca la barra de desplazamiento horizontal.
HScroll1.Top = Picture1.Height
HScroll1.Left = 0
HScroll1.Width = Picture1.Width
' Coloca la barra de desplazamiento vertical.
VScroll1.Top = 0
VScroll1.Left = Picture1.Width
VScroll1.Height = Picture1.Height
' Establece la propiedad Max de las ' barras de desplazamiento.
HScroll1.Max = Picture2.Width - Picture1.Width
VScroll1.Max = Picture2.Height - Picture1.Height
' Determina si la imagen secundaria cabe en la
' pantalla.
Si es así, no son necesarias las ' barras de desplazamiento.
VScroll1.Visible = (Picture1.Height < _
Picture2.Height)
HScroll1.Visible = (Picture1.Width < _
Picture2.Width)
End Sub
El evento Change de los controles HScrollBar y VScrollBar se utiliza para mover el cuadro de imagen secundario de arriba abajo y de izquierda a derecha dentro del cuadro de imagen primario. Agregue el código siguiente al evento Change de ambos controles ScrollBar:
Private Sub HScroll1_Change()
Picture2.Left = -HScroll1.Valor
End Sub
Private Sub VScroll1_Change()
Picture2.Top = -VScroll1.Valor
End Sub
Las propiedades Left y Top del cuadro de imagen secundario se establecen al valor negativo de las barras de desplazamiento horizontal y vertical para que al desplazarse de arriba a abajo y de izquierda a derecha, la vista se mueva correctamente.
Cambiar el tamaño del formulario en tiempo de ejecución
En el ejemplo anterior, el tamaño visible del gráfico está limitado por el tamaño original del formulario. Para cambiar el tamaño de la aplicación de vista de gráficos cuando el usuario ajuste el tamaño del formulario en tiempo de ejecución, agregue el código siguiente al procedimiento de evento Form_Resize del formulario:
Private Sub Form_Resize()
' Cuando cambia el tamaño del formulario, cambian
' las dimensiones de Picture1.
Picture1.Height = Form1.Height
Picture1.Width = Form1.Width
' Reinicializa la posición de la imagen y de las
' barras de desplazamiento.
Picture1.Move 0, 0, ScaleWidth - VScroll1.Width, _
ScaleHeight - HScroll1.Height
Picture2.Move 0, 0
HScroll1.Top = Picture1.Height
HScroll1.Left = 0
HScroll1.Width = Picture1.Width
VScroll1.Top = 0
VScroll1.Left = Picture1.Width
VScroll1.Height = Picture1.Height
HScroll1.Max = Picture2.Width - Picture1.Width
VScroll1.Max = Picture2.Height - Picture1.Width
' Comprueba si son necesarias las ' barras de desplazamiento.
VScroll1.Visible = (Picture1.Height < _
Picture2.Height)
HScroll1.Visible = (Picture1.Width < _
Picture2.Width)
End Sub
MUCHISIMAS GRACIAS POR LA AYUDA
-
el unico error que veo es que no es
Private Sub HScroll1_Change()
Picture2.Left = -HScroll1.Valor
End Sub
Private Sub VScroll1_Change()
Picture2.Top = -VScroll1.Valor
End Sub
si no
Private Sub HScroll1_Change()
Picture2.Left = HScroll1.Valor
End Sub
Private Sub VScroll1_Change()
Picture2.Top = VScroll1.Valor
End Sub
por que???
porque los valores de top y de left empiezan desde cero cuando estan dentro de algunos controles como el picture, los controles scroll cuando cambia ellos te entregan un valor entre min o max, osea que cuando cambian por ejemplo
min=0
max=100
value<=100 y value>=0
como comentario podrias cambiar a el picture2 por un image porque es mucho mas libiano y funciona mejor.