Página 1 de 1

Ampliar Input según el contenido para imprimir

Publicado: 27 Sep 2013 12:17
por brordo
Hola a todos.

Mi duda corresponde a un problema que me he encontrado y que caaasi he encontrado la solución (pensando y echando humo por la cabeza).

Quiero que al insertar los datos en un input (provienen de una celda de una base de datos), el input se ajuste al número de caracteres del texto y se amplíe hasta el punto en que sea posible crear una nueva página donde continúe el contenido del texto. En plan Word que vas escribiendo y se van incrementando páginas...

De momento he realizado un invento que lo único que hace es reducir el input al tamaño del texto, cogiendo el recuento del número de caracteres, pero que lo reduce definiendo un margen en vertical en vez de horizontal

Publicado: 27 Sep 2013 12:21
por brordo
Código LUA:
--------Recojo el texto del input------------

InpCausa = Input.GetText("InputCausa");

-------Recojo el número de caracteres del input-----
        
TextCausa = String.Length(InpCausa);

-------Recojo el tamaño del input (para que cuando amplie la página se acople).

TamanyInpCausa = Input.GetSize("InputCausa");
Y aquí es donde falla el asunto... le aplico el ancho (aunque es el total de ancho y alto) del input y número de caracteres del texto para que, por mi lógica, respete la altura.
TamanyCausa = Input.SetSize("InputCausa",TamanyInpCausa,TextCausa);

Publicado: 27 Sep 2013 19:39
por Metafunken
Pues veras, algo de a rapido:
Antes que nada deberas activar el parametro Multiline del Input o deberas hacerlo mediante codigo cuando te detecte una nueva linea, de esto tu te encargaras...
On Preload:
nInpSize_W = Input.GetSize("Input1").Width;
nInpSize_H = Input.GetSize("Input1").Height;
nLine = 1;
On Key (Input):
nCharLenght = String.ToNumber(String.Length(Input.GetText("Input1")));
On Click (boton):
nInpSize_HH = Input.GetSize("Input1").Height;

if (nCharLenght == nil) then
	nCharLenght = 1;
end

if (nCharLenght > 100) then

	nInputLength = String.Length(Input.GetText("Input1"));
	Input.SetSelection("Input1", nInputLength + 1, -1);
	nInputLines = String.ToNumber(Input.GetSelection("Input1").LineNum);
	Input.SetSelection("Input1", -1, -1);

	if (nNewSize == nil) then
		nNewSize = nInpSize_H;
	end

	if (nInputLines == 2) then
		nNewSize = nInpSize_H + nInpSize_H;
	end

	if (nInpSize_HH <= 344) then
		nNewSize = nInpSize_HH + nInpSize_H;
	end
	if  (nInpSize_HH >= 345) then
		nNewSize = nil;
	end
	if (nNewSize ~= nil) then
		Input.SetSize("Input1", nInpSize_W, nNewSize);
	end
else
	Input.SetSize("Input1", nInpSize_W, nInpSize_H);
end
Te advierto que tendras que mejorar este codigo e incluso simplificarlo, esta es tan solo una vaga manera de lograr lo que pretendes, no esta bien hecho (y no quiere decir que no sepa como hacer que funcione al 100%) pues lo hice muy rapidamente pero en esencia es lo que necesitas, solo desarrollalo...

Si logras lo que pretendes te pido que postees tu resultado para que otros usuarios tengan la oportunidad de utilizarlo, de igual manera, si alguien mas mira esto y le sirve este codigo espero sus aportes, esto me impulsara a seguirlos ayudando u al menos orientarlos, de lo contrario dejare de ayudar a quien omita este llamado.

Saludos.

Publicado: 28 Sep 2013 20:29
por brordo
Hola Metafunken

No te preocupes por la respuesta y el apoyo, aunque se poco intento aportar lo que puedo de vez en cuando, para eso estamos.

Muchas gracias, me comeré la cabeza ahora mismo para ver si lo soluciono.

Publicado: 28 Sep 2013 21:44
por brordo
He exportado un pequeño ejemplo y muy resumido a la ayuda prestada
Lo he subido al "AMS FILES" pero al comprobar que había subido correctamente... no estaba.
Dejo el enlace del MEGA del proyecto por si aca.

Nombre: Ampliacion.Automatica.Input.Segun.Texto.APZ


https://mega.co.nz/#!hBgEXDJJ!TYxKU2hPs ... anDROWqQAs

De todas formas he comprobado que funciona pero no a la perfección... Extiende el input en altura, pero en cambio no la limita. En el proyecto se aprecia muy bien.
Este problema no lo he podido solucionar, haber si alguien aporta algo más...

Gracias y seguiré estudiando si hay alguna forma de perfeccionar el código.

Re:

Publicado: 29 Sep 2013 08:07
por rafaxplayer
brordo escribió:He exportado un pequeño ejemplo y muy resumido a la ayuda prestada
Lo he subido al "AMS FILES" pero al comprobar que había subido correctamente... no estaba.
Al subir archivos a AMSFiles! no se suben inmediatamente , hay que esperar a que el admin (yo) compruebe que esta todo correcto y se pueda añadir a la base de datos.
En tu caso había un error (que es una xorrada ) ya te envié un MP al respecto.

Re:

Publicado: 29 Sep 2013 09:41
por Metafunken
brordo escribió: No te preocupes por la respuesta y el apoyo, aunque se poco intento aportar lo que puedo de vez en cuando, para eso estamos.
Dicen que "hablando se entiende la gente", aqui pues... Escribiendo, espero comprendas que lo hice de esta manera para que explotes tu cerebro tratando de solucionarlo, no es dificil hacerlo, a veces necesitamos (como decimos aqui) "un norte" para saber a donde vamos, el norte se te ha dado y lo que quiero provocar con mis comentarios pues es la participacion en el foro, cierto es que no he estado muy activo (bien dicen que el buen juez por su casa empieza) pero vengo lo necesario y cada vez que puedo a ayudar, solo quiero que este foro dure mas tiempo pues si no aportamos mmm... El foro podria dejar de funcionar por que los Administradores podrian perder el interes tarde o temprano.

Nuevamente digo: Esto le pega a quien quiere aprender codigo, quien solo se dedica a crear los cagados todo en uno pues que carajos le importa lo que escriba, solo vienen a sacar informacion sin aportar nada, es mas, se de uno que solo entra a jalarse los links de descarga para ponerlos en sus post de otros sitios y eso es una joda pues "se para el cuello sin que le haya costado siquiera la subida", pero se mira que tu si quieres aprender pues ahi esta la prueba, haz hecho tu aporte y haz correspondido al llamado de los thundercats :) espero lo hagas cada que puedas mi buen.

Saludos viejo ;)

Publicado: 30 Sep 2013 09:57
por kauster72
thanks