![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
He estado ausente un tiempo. Me he encontrado este hilo y la referencia en este otro.
Veo que posiblemente a estas alturas el problema está solucionado, pero me gustaría aportar mi granito de arena al problema. Hasta Windows 8 no es posible tener el estilo WS_EX_LAYERED en ventanas child por lo que el problema no tiene solución... O si, la solución es hacer "trampas" y simular que una ventana top-level es child. http://msdn.microsoft.com/es-es/libr...=vs.85%29.aspx Cita:
Para el formulario Padre tratamos de que las ventanas hijas se desplacen con él para que parezcan childwindows:
Y para el formulario hijo evitamos que pueda salir del entorno de la ventana padre, simulando ser child:
El resto del código que presento es adorno. Subo un ejemplo compilable en delphi7. Espero haber servido de ayuda aunque sea un poco tarde. Saludos. Última edición por escafandra fecha: 06-04-2013 a las 20:19:27. |
|
#2
|
||||
|
||||
|
Gracias escafandra por volver y estar ahi, al pie del cañon
![]() Con el codigo usado hasta ahora va bastante bien, solo se ve un pequeño retardo al mover las ventanas "hijas", pero he detectado que no funciona (no mueve a las hijas) en windows server 2003. Probare tu tecnica (que seguro que es la buena) y lo comento. Tomate una ![]()
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo. |
|
#3
|
||||
|
||||
|
He visto un molesto efecto cuando las ventanas hijas tienen borde y Caption, son mas de una y movemos la ventana padre. Se trata de un cambio rápido se foco de una a otra. La solución es sencilla y basta con añadir SWP_NOACTIVATE y SWP_NOZORDER en SetWindowPos en el procedimiento TForm1.WMMoving:
Saludos. Última edición por escafandra fecha: 05-04-2013 a las 20:41:43. |
|
#4
|
||||
|
||||
|
Hola escafandra, he probado tu codigo (delphi 2010 y windows 7 64) y
no mueve las hijas por que no detecta bien el nombre de la clase enSolo ve las clases THintWindows y TForm1 Si lo comprueba con "if Application.Components[i].Unitname" solo ve Controls y Unit1. Es como si para la aplicacion no tuviera los formularios creados en tiempo de ejecucion En Application.ComponentCount siempre tiene le valor 2, aunque cree 10 ventanas "hijas" ![]() ¿Sera algo del compilador o se puede comprobar de otra manera? Saludos.
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo. |
|
#5
|
||||
|
||||
|
Debes eliminar Appliation, puesto que el owner de los formularios TForm2 es TForm1:
Tal como el código que expongo aquí. El código es un boceto y puede irse mejorando según las necesidades. Vuelvo a subir el código completo por si las moscas... Saludos. Última edición por escafandra fecha: 09-03-2020 a las 08:00:24. |
|
#6
|
||||
|
||||
|
Ahora si
![]() Probare tu codigo en mi aplicacion y te cuento si es mejor (que seguro que si) ![]() Thanks. PD: Esta funcion hace que cuando pulse el raton en la ventana (no en el caption) mande el mensaje de mover, veo que ReleaseCapture deja al cursor hacer lo que estaba haciendo, pero.. porque se manda Perform(VM_SYSCOMMAND, $F012, 0); y que valor es $F012.
Un saludo
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo. Última edición por cesarsoftware fecha: 06-04-2013 a las 21:13:57. |
|
#7
|
||||
|
||||
|
Se trata de enviar un mensaje WM_SYSCOMMAND con el parámetro wParam SC_MOVE (F010h) or 2. Conseguimos el efecto de mover la ventana sin pinchar en la barra del caption.
Saludos. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Crear un form fsMDIForm y varios forms hijos | citlalliDgp | Varios | 11 | 07-12-2007 15:13:31 |
| ¿Quien es mi Form Padre? | gabrio | OOP | 4 | 16-10-2007 20:33:06 |
| Nodo padre sin hijos en TTreeView | jorgesl | OOP | 3 | 10-04-2006 20:24:11 |
| Formulario padre con hijos | oscarsanta | Conexión con bases de datos | 2 | 31-01-2006 13:17:13 |
| como puedo poner form hijos | ronimaxh | Varios | 5 | 22-10-2003 22:55:23 |
|