Forum > Spanish

Remover scroll vertical en IPro

(1/1)

mosquito:
Hola,

quisiera remover el scroll vertical de un IpHtmlPanel (de IPro).
Alguna idea? A ser posible sin "trucos de fontanería", como...

--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---form1.width 100;html1.width 130; 
Creo recordar que el componente HtmlViewer tenía esta opción, pero busco compilación (Win, Gnu/LInux, Mac) y parece que Mac no está soportado. Además la posibilidad de tocar en tiempo real el arbol DOM me parece una capacidad muy potente de IPro.

Gracias.

P.D.: Me refiero a remover la barra de scroll, no a la susceptibilidad del control a ser scrolleado.

Ñuño_Martínez:
No tengo Mac, así que no sé, pero contesto para que subir el mensaje y que se vea mejor, a ver si alguien sabe.

Edson:
No manejo el IPro, pero por lo que veo el TIpHtmlPanel, no expone propiedades para controlar la barra de desplazamiento vertical. Me temo que:

- Tendrás que recurrir a trucos de fontanería
- Acceder a campos protegidos del control para acceder a los Scrollbar.
- Preguntar en inglés a ver si alguien más entendido pueda responderte.
- Usar otro control similar.

mosquito:
Ñuño y Edson: gracias por el interés.
 
La cosa avanza,
la barra de scroll ya no aparece. Lo malo es que ahora tampoco permite hacer scroll por código, que es precisamente lo que ya tenía implementado. No tengo prisa así que iré investigando.

No obviemos que las scrollbars , tanto en el navegador web como en  las aplicaciones desktop han sido una china en el zapato de los maquetadores desde el principio de los tiempos, porque aunque es la puerta de entrada para un diseño customizado, suelen estar fuertemente implementadas con el sistema operativo (necesitan syncro constante y pasar mensajes, algunas funcionalidades de las aplicaciones se encienden y apagan dependiendo de la presencia o ausencia de la scrollbar, entre otras muchas cosas).

Para remover aquí la receta:

1. Cambié el propietario y grupo del directorio de las fuentes para poder modificarlas, aunque al ser una librería tan compacta (1 unidad el panel), creo que la moveré al directorio del proyecto si finalmente funciona. Toy en Gnu/Linux.
    en el directorio de las fuentes: sudo chown -R user:group *
2. Tocar el constructor, no del panel sino de la clase del scroll:

--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---constructor TIpHtmlScrollBar.Create(AControl: TIpHtmlInternalPanel;  AKind: TScrollBarKind);begin  inherited Create;  FControl := AControl;  FKind := AKind;  FPageIncrement := 80;  FIncrement := FPageIncrement div 10;  FVisible := False;      // <-------------[TOCADO]  FUpdateNeeded := True;end; 
3. Forzar la escritura de la variable en este procedimiento.
 
--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---procedure TIpHtmlScrollBar.SetVisible(Value: Boolean);begin  //FVisible := Value; // <-------------[Original]  fvisible:=false;       // <-------------[Forzado]   FControl.UpdateScrollBars;end; 
* todo esto esta en /componentes/turpopower_ipro/iphtml.pas

Pasos siguientes:

- Plan A: conseguir escroll por código, es el objetivo. (permite liberación total del scroll nativo, o usar una dibujada, que ya la tengo hecha y trabaja perfectamente con otros controles que si permiten esconder el scroll).
 
- Plan B: ver si el componente AT_FlatControls/scrollbar y FKind: TScrollBarKind (de IPro) son primos cercanos (posible injerto).

- Plan C: meter todo el texto no en un <HTML><BODY> sino en un <IFRAME> y tocar el código fuente del parser de esta etiqueta (será divertido).

Navigation

[0] Message Index

Go to full version