Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: YAcosta en Octubre 13, 2012, 11:20:02 pm
-
Pues eso, no logro conseguir quitar este icono:
(http://i.snag.gy/urxi0.jpg)
No quiero ponerle ningún icono, por ahora solo se me ocurre ponerle un icono azul pero si hay una forma mas ortodoxa se los agradecería.
Saludos
-
Y desactivar ControlBox?
-
Esa propiedad no tiene el MidiForm. Ya me recorrí todas las propiedades y no hay de manera natural la opción para quitar el icono o cambiar el tipo de formulario como los formularios "normales"
-
La verdad quisiera tambien inhabilitar o mejor desaparecer los botones del MidiForm
(http://i.snag.gy/8W9bu.jpg)
Voy a buscar a ver que encuentro.
-
Solo se me ocurre por API... y... si en lugar de eso no creas un MDI sin borde, y solo le pones para que se mueva por un label? (?
-
No entendí doc lo del MDI sin borde, lo del label tampoco lo entendí.
Debo comentarte que no estoy empezando un programa desde cero, mas bien a uno +/- grande le he quitado un 50% de lo que tenia tanto en código como en formularios (varios días) y ya lo tengo 99% listo, por ello es que deseaba usar el mdiform que ya tengo con todo lo que en el hay y no rehacerlo.
Voy a averiguar si con APIs quito los botones, sino ni modo queda asi, y el icono le pondré uno azul = al fondo de la barra.
Gracias.
-
Saludos a todos !!!
Yvan, ¿no te serviría (tomando un poco de la idea de raul338) un form "normal" sin borde? lo colocas, ya sabes none.
¿Qué va a pasar con esto? Te a quedar un Form inmóvil. Pero puedes crear una barra de título personalizada, tomando un PictureBox, le creas un fondo, bueno ya queda a tu imaginación. A continuación, te puedes servir de las API's ReleaseCapture y SendMessage.
Ahi podrías resolver lo de tu problema con lo de "desaparecer" el icono default.
Ahora si lo que necesitas es mantenerlo con el 'formato' MDI, puedes "crear" los forms hijos (MDIChild), valiéndote de la API SetParent.
Espero te pueda servir de algo, Hermano !!!
Saludos !!!
Manuel F. Borrego S. 8)
Barcelona. Venezuela.
-
Estimado YAcosta
En el screenshot veras el código para poder quitar los botones de Minimizar, Maximizar y Cerrar del Formulario MDI como un efecto colateral de este código se obtiene lo que buscas que es retirar el Icono del formulario MDI, espero te sea de utilidad
(http://www.technetperu.org/webdrive/EA64835D2E2E41F9AF85EBE06318BC87/MDI_to_YAcosta.JPG)
NOTAS:
1.- Puedes descargar el proyecto de la siguiente URL http://www.technetperu.org/webdrive/EA64835D2E2E41F9AF85EBE06318BC87/MDI_to_YAcosta.rar (http://www.technetperu.org/webdrive/EA64835D2E2E41F9AF85EBE06318BC87/MDI_to_YAcosta.rar)
2.- Adjunto en el archivo comprimido un icono transparente por si solo quieres que no se vea el Icono del formulario
Saludos de algún lugar de Lima-Perú
-
Gracias Manuel por los comentarios.
Te diré que si tengo en otros proyectos esa experiencia con el parent, dibujar controles, simular MDIForm mas personalizado, etc, incluso en mi soft bandera tengo ese tema realizado como puedes apreciar aquí:
(http://i.snag.gy/NmFlJ.jpg)
Pero la verdad no quería meterle mucha letra a este tema que ya tengo casi terminado, me interesaba saber si habia algun truquillo bajo la manga al menos para quitar el icono (motivo original del post) pero si eso implica todo ese concierto... pues ya sea por tiempo, por costo o por pereza prefiero dejarlo así, es que tendría que mover algunas cosas que no quiero tocar.
Igual gracias, y lamento la aún presencia de Chavez.
Saludos doc.
-
guauu Albertomi!!! muchas gracias... voy a ver el codigo ya mismo.
Muchas gracias.
-
Estimado YAcosta
Espero que el código sea lo que estas necesitando.
Saludos desde algún lugar de Lima-Perú
-
Albertomi, muchas gracias, es poco código como justamente quería y tu proyecto efectivamente funciona, pero al llevar las declaraciones al mio, y llevar el código al load... también el icono ghost a la carpeta de mi proyecto... pues no me reproduce ningún cambio en tiempo de ejecución, no entiendo porque no se genera el mismo efecto, voy a seguir revisando.
Muchas gracias!!!
-
YA esta!!! PERFECTO!!!!!
Lo que pasa es que por ciertas validaciones que estoy haciendo cargo un formulario hijo en el Initialice y no lo puedo mover de alli por X motivos. Asi que puse tu codigo antes de levantar dicho form hijo y PERFECTO!!!
Muchas gracias doc, te debo un par de chelas pa cuando te vengas por Ate!!!
Saludos
-
Bueno Yvan, ahora si entiendo lo que querías !!! ::) :o
Por lo de chavez el C.D.S.M. !!! (Ojo que no es "cadena de suministros marinos", por si acaso, Je, Je !!!), 6 años más !!! pero que carajo !!! a seguir adelante !!!
Bien, albertomi !!! no j...!!! te vamos a postular para diputado (a algo más bravo :o) !!!
Ese código n.p.i. que no sabía que existía, porque la inquietud de Yvan la tuve una vez, y lo que me provocó, fue tirarle un atentado a microsoft por ese "detallito insolvente", pero veo que ahora tiene solución !!! excelente !!!
Lo voy a usar para probarlo en los MDI de VB 2008 (ya que aunque casi no hacen falta las API'S, se podría implementar).
Saludos !!!
Edición: No es que quiera decir que ya no se usan las API's, sino que con el poder y facilidades con que se pueden realizar las aplicaciones, No habría que recurrir por obligatoriedad (por así decirlo) a las API's como hay que hacerlo en más de una ocasión en VB 6.0, cuando uno quiere salirse del "estandar visual" ofrecido.
-
Bueno Alberomi, como te dije hice las pruebas en Win7 con VB 2008 (si ya se, que para algunos, esta respuesta debería ir en el apartado de VB .Net ::)) y estor fueron los resultados:
(http://imageshack.us/a/img15/1885/mdisiniconosnibotones.png)
Lo bueno de todo, es que el MDI no pierde su 'movilidad' :o :o :o
Este fue el código con muy ligeras modificaciones (el parámetro hWnd es sustituído por Handle)
Public Class frmMDIWithCBT
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Integer, ByVal nIndex As Integer)As Integer
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA"(ByVal hwnd As Integer,ByVal nIndex As Integer, ByVal dwNewLong As Integer)As Integer
Private Const WS_CLOSEBOX As Long = &H80000
Private Const WS_MAXIMIZEBOX As Long = &H10000
Private Const WS_MINIMIZEBOX As Long = &H20000
Private Const GWL_STYLE As Long = (-16)
Private Sub frmMDIWithCBT_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim lWnd As Long = 0
'//
lWnd = GetWindowLong(Me.Handle.ToInt32, GWL_STYLE)
lWnd = lWnd And Not (WS_MINIMIZEBOX)
lWnd = lWnd And Not (WS_MAXIMIZEBOX)
lWnd = lWnd And Not (WS_CLOSEBOX)
lWnd = SetWindowLong(Me.Handle.ToInt32, GWL_STYLE, CInt(lWnd))
End Sub
End Class
Saludos !!! ;D
Manuel F. Borrego S. 8)
Barcelona. Venezuela.