Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: Bazooka en Abril 02, 2013, 06:22:19 pm
-
Hola tengo un Proyecto MDI desde el que necesito abrir un form (no hijo) y quiero que no se oculte si por error se hace clik afuera, ademas desde este form se abre otro que deberia pegarse al lado y comportarse de igual manera (ver la imagen)
(http://www.misimagenesgratis.com.ar/images/02-04-2013 18-20-09.jpg)
-
Estimado Bazooka
Este formulario quieres que quede delante de todos los formularios (OnTop) o solo delante del formulario MDI?
Saludos, desde algún lugar de Lima - Perú
-
Solo delante del mdi porque siempre se habre solo el que est
a a la izquierda
-
Hola bazooka, lo que tienes que hacer es cuando llamas al form1 pasarle el padre (ojo no tiene que ver a mdi al o que me refiero)
por ejemplo dentro del form mdi
Form1.show, , ME
el ME se refiere al form mdi
en cuando a la derecha o izquierda no tengo ahora el vb, pero si no es con mdi.left + hijo.left + hijo.width seguramente con alguna api se puede.
Saludos.
-
Creo que podrian fusionarse dos ejemplo con api pero no he podido hacerlo me refiero a
Siempre visible
'Constantes para pasarle a la función Api SetWindowPos - Siempre visible
Const SWP_NOMOVE = 2
Const SWP_NOSIZE = 1
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Sub Form_Load()
SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
End Sub
Y a este otro que mantiene el form siempre dentro del mdiForm aunque el form no sea mdiChild
Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Sub Command1_Click()
Dim Ret As Long
Ret = Module2.SetParent(form1.hwnd, MDIForm1.hwnd)
form1.Show
End Sub
-
Leandro nose si basuka probo pero a mi me sale "Numero de argumentos erroneo o asignacion de propiedad no valida"
-
Leandro nose si basuka probo pero a mi me sale "Numero de argumentos erroneo o asignacion de propiedad no valida"
Si el formulario esta en Mdchild=True te error !!!
-
perdón con una coma menos
Form1.show , ME
tengo entendido que el form1 no es mdichild = true
-
No no es Mdchild = True pero si lo fuera llamarlo asi Form1.show , ME Da error!! a eso me referia
-
Bien, ahora entiendo lo estas llamando desde el form(Editor de carton) entones hace esto
dentro del form (Editor de carton) pone este codigo
Option Explicit
Private Declare Function ClientToScreen Lib "user32.dll" (ByVal hwnd As Long, ByRef lpPoint As POINTAPI) As Long
Private Declare Function GetWindowRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As RECT) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Sub Command1_Click()
Dim tRECT As RECT
Dim PT As POINTAPI
ClientToScreen Me.hwnd, PT
GetWindowRect Me.hwnd, tRECT
Form1.Move (tRECT.Left + (tRECT.Right - tRECT.Left)) * Screen.TwipsPerPixelX, (PT.y - (PT.y - tRECT.Top)) * Screen.TwipsPerPixelY
Form1.Show , MDIForm1
End Sub
cambia el nombre command1 por el nombre de tu boton.
Saludos.