FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#41
|
||||
|
||||
¿?
No entiendo.
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo. |
#42
|
||||
|
||||
A ver, a ver, en que Habré estado pensando...
Sólo me queda el consuelo de que lo escribí "al vuelo" y se me pasó ese pequeño gran detalle. Será que como es muda, nadie se acuerda de ella. Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#43
|
||||
|
||||
Vale, revisando los post, entiendo lo de habran, (abran) los mensajes.
Tendran algun problema en el servidor
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo. |
#44
|
||||
|
||||
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. |
#45
|
||||
|
||||
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. |
#46
|
||||
|
||||
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. |
#47
|
||||
|
||||
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 en
Solo 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. |
#48
|
||||
|
||||
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. |
#49
|
||||
|
||||
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. |
#50
|
||||
|
||||
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. |
#51
|
||||
|
||||
Gracias por la aclaracion
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo. |
#52
|
||||
|
||||
Con tu codigo en el formulario principal, el movimiento de las ventanas hijas es mucho mas fino, sigue sin funcionar en server 2003, pero no me importa demasiado (ahora en vez de dejar las ventanas hijas donde estan las mueve arriba y a la izquerda a toda velocidad).
Con mi codigo se ve (al ojo) el desplazamiento de las ventanas hijas sobre el formulario principal.
Lo que no he sabido hacer es como implementar en las ventanas hijas por que se crean "on the fly y sin forma", pero es que ademas como controlo las pulsaciones del raton entonces aprovecho para mover las ventanas hijas.
asi que sigo usando las que me van bien
Por tanto, de momento, me quedo con el tuyo en el formulario padre y con el mio en el formulario hijo en tiempo de ejecucion.
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo. |
#53
|
||||
|
||||
Cita:
Saludos. |
#54
|
||||
|
||||
Si, ya me lo he planteado, de hecho el objeto que crea este formulario usa otros 2 formularios creados en tiempo de diseño, pero es que esta "forma" viene deribada de que antes era un panel y cuando me acorde del alphablend "lo converti" en forma, de ahi que se cree en tiempo de ejecucion.
Gracias por la ayuda.
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo. |
#55
|
||||
|
||||
En realidad cualquier ventana no child (para winXP, Vista ó win7) puede ser transparente... Basta con dar el estilo WS_EX_LAYERED y usar la API SetLayeredWindowAttributes para establecer el porcentaje de opacidad.
En tu caso lo mas sencillo es usar el alphablend del TForm, que se basa en el mismo principio, y derivar de ésta clase tu ventana. Lo suyo sería hacerlo en tiempo de diseño para tener un fácil control. Por cierto, el código que dejé permite moverse a las ventanas hijas por todo el área de la ventana padre. Para ser mas cercano a una ventana child, debería limitarse el recorrido exclusivamente al área cliente de la ventana padre. Saludos. Última edición por escafandra fecha: 08-04-2013 a las 19:52:54. |
#56
|
||||
|
||||
Si, antes de comprobar onmousemove ya se han incluido las variables
y al crear la forma se posiciona segun esos margenes
y al controlar los limites en onmousemove
En este video se ve como no se pasa de limites con estas funciones http://www.youtube.com/watch?v=yHiEy...ature=youtu.be Saludos
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo. |
#57
|
||||
|
||||
Bien. Pero fíjate que puedes calcular directamente el area cliente sin necesidad de calcular los anchos de borde y de la barra del caption:
Esta sería la modificación en el tratamiento de mensaje de WM_MOVING:
Tratar el mensaje WM_MOVING es mejor que el OnMouseMove pues hace referencia al movimiento de la ventana, no del ratón, sea cual sea el mecanismo del movimiento (ratón o teclado) y se llama durante el movimiento continuo, no tras éste. Además es mas simple y rápido. Saludos |
#58
|
||||
|
||||
Voy a poner un ejemplo de como implementar cualquier función de tratamiento de mensajes en una ventana aún no siendo diseñada en tiempo de diseño. La técnica es hacer un Subclassing.
Vamos a cambiar la función de tratamiento de mensajes de la ventana a bajo nivel y vamos a guardar el puntero a la antigua función para poder llamarla a la salida de nuestra nueva función (como si fuera una especie de inherited) Con esto conseguimos cambiar el comportamiento de la ventana para los aspectos que nos interesen y respetar el resto. Para guardar el puntero a la antigua función de tratamiento de mensajes utilizaré el Tag del TWinControl. Este sería el código resultante para el tema de este hilo usando subclassing:
Saludos. |
#59
|
||||
|
||||
Gracias escafandra.
Estos dias tengo que entregar otro trabajo y no he podido probar. Intentare sacar un rato este finde semana y te cuento como ha ido. unas
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo. |
|
|
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 |
|