Ver la Versión Completa : [Componente] Formulario desplazable
lfortuny
16 de enero de 2017, 08:53
Buenos días a tod@s.
Estoy buscando alguna forma de hacer un formulario con barra de desplazamiento o bien poner los botones, campos, etc., dentro de 'algo' que tenga barra de desplazamiento.
La razón es que se trata de un mantenimiento de trabajadores en que hay muchísimos campos y el 'Tab control' ya está usado.
Se trataría de hacer el formulario menos cargado y que se pudiera ver y rellenar tipo página web.
Si alguien tiene alguna idea de como hacer eso seria de agradecer.
Muchísimas gracias.
Kuk
16 de enero de 2017, 09:17
lfortuny, puedes colocar en modo diseño todo lo que necesitas en un Frame (CmFrame) que sea más grande que el formulario. Luego colocas un Scrollbar y juegas con la propiedad "Top" del dicho Frame. El CmScroll tiene el evento "Change". De ahí se obtiene el valor actual de la posición del Scroll (de 0 a N). Haciendo los cálculos, hay que ajustar el paso de movimiento sel ScrollBar a N pixeles para que el máximo de Scroll posicione el Frame al final, y el mínimo de Scroll en Top=0.
No sé si me he explicado bien. :fuma:
lfortuny
16 de enero de 2017, 09:25
Gracias Kuk.
Realmente no uso el 'scrollbar', parece interesante, voy a probar.
Muchísimas gracias.
:bien::yupi:
Kuk
16 de enero de 2017, 09:46
lfortuny, también échale un ojo al ejemplo de Rapinto aquí: [Aporte] Exemplo ScrollBar *COM para PowerCOBOL - COBOL Foro (http://cobolforo.es/showthread.php?t=556)
Aunque veo que le habías dado a "Gracias" para Rui hace tiempo, o sea que habías leído sus posts y se te ha olvidado :)
lfortuny
16 de enero de 2017, 10:43
Gracias de nuevo.
Parece estar bastante bien. El único 'detalle' que encuentro es que tendré que controlar la posición en que se encuentra el campo para que el scroll se mueva automáticamente.
Saludos cordiales.
Kuk
16 de enero de 2017, 11:21
lfortuny, ¿quieres decir que si el usuario presiona el TAB y el focus se posiciona sobre un campo que no está en el área visible, el scroll baje automáticamente?
Si es eso, tendrías que obtener el "ActiveControl" del Form, reconocerlo por nombre, comprobar su propiedad "Top" en el CmFrame y comprobar el "Top" del propio Frame. Luego mirar si queda fuera del area de tu Form y mover el valor necesario al scroll para que mueva el Frame de tal manera que el campo aparezca.
Es importante la dependencia del "Top" del Frame del valor de Scroll que se modifica en el evento "Change" del Scrollbar. De esta manera, vuando muevas un valor al scroll de Scrollbar, el código de su evento "Change" moverá automáticamente el Frame.
Ya nos cuentas los resultados ;)
lfortuny
16 de enero de 2017, 17:26
Exactamente. El Tab no mueve el scroll, tendré que controlar la posición que se encuentra del scroll para que siempre sea visible en el form.
Entiendo que con el GetFocus del concepto donde me encuentre y cogiendo su posición me mueva el scroll a esa posición para que sea visibLe. Supongo que poniendo una llamada en cada GetFocus a un procedimiento que controle las posiciones será suficiente.
Ya te diré y si me salgo publicaré un ejemplo.
Saludos cordiales.
Nitzer
18 de enero de 2017, 11:07
Voy a dar mi humilde opinión sobre este tema y por la experiencia os digo que no me equivoco, bueno en realidad yo nunca me equivoco :)
Frase: Lo que no se vea en una pantalla no tiene sentido mostrarlo, ese es mi lema.
NO quiero crear polémica. Hay muchos métodos para dividir contenido de un formulario pero no le pongas un scroll por diossssssssssssssssssssssss. :)
Es igual que los grid, Siempre procuro que no tengan scroll horizontal, el vertical obviamente es inevitable.
En casos de formularios, divido y agrupo los campos en frames y luego juego con el cmtab y unos botones para moverme por ellos.
En el caso de los grid, tengo varias "vistas", pero la principal procuro que no tenga barras.
A ver si tengo tiempo de preparar el video de mis aplicaciones y os lo puedo explicar, además sabiendo que esta éste tema, me puedo centrar en ello.
Un saludo a todos, el cobol persistirá, no lo dudéis.
vBulletin v3.8.7, Derechos ©2000-2026, Jelsoft Enterprises Ltd.