Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-11-2010
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
Question ¿como hacer que un string tenga retornos de carro saltos de linea?

hola

tengo un problema quiero dar formato a un string que me devuelve una query

tengo esto asi.

Código Delphi [-]
select cadenalarga from tabla_sucesos
 
execsql;
 
 for i := 0 to Query1.RecordCount - 1 do
            begin
      cadenalarga := Query1.Fields[0].AsString;
             end
 
memo1.lines.add(cadenalarga );

pero la cadena es demasiado larga
como esto

cadena ubien larga odnsaodinasocnascosanco ncosndcccadena ubien largaodnsaodinasocnascosancocosndcccadenaubienargadnsaodinasocnascosanco ncosndcccadena ubien larga odnsaodinasocnascosanco ncosndcc

hay forma de que se limite digamos aun ancho de 20 caracteres
y luego mostrarla en el memo


asi

cadena ubien larga o
dnsaodinasocnascos
anco ncosndcccdas
Responder Con Cita
  #2  
Antiguo 01-11-2010
rrf rrf is offline
Miembro
 
Registrado: ago 2003
Ubicación: S/C Tenerife, España
Posts: 454
Poder: 21
rrf Va por buen camino
Tienes que buscar la aparición de un espacio en blanco desde el caracter que ocupa el lugar 20 (que es el máximo que tú comentas), hacia atrás.

Cuando aparezca, lo reemplazas con ' '+#13+#10.

Con ello ya tienes el retorno de carro en medio de la cadena. Y sigues haciéndolo hasta que se acaba la cadena de texto.

Luego:

Memo1.lines.text := cadena_de_texto_modificada ;


Otra forma, y creo que más sencilla, es buscar un espacio en blanco desde el límite (20 en tu caso) hacia atrás y, cuando lo encuentres, lo añades como línea al Memo.

Luego sigues realizando ese proceso desde ese punto de la cadena de texto en adelante.

Espero que te sirva.

Saludos.
Responder Con Cita
  #3  
Antiguo 01-11-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola JXJ.

¿ No te sería más fácil poner en True la propiedad WordWrap del Memo ?


Saludos.

Última edición por ecfisa fecha: 01-11-2010 a las 09:56:24.
Responder Con Cita
  #4  
Antiguo 02-11-2010
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola JXJ.

¿ No te sería más fácil poner en True la propiedad WordWrap del Memo ?


Saludos.
no por que el memo tiene que tener cierta informacion
en este formato


Código:
encabezado 
titulo 
caracteristicas blablabalbalablabalbalablabalba
 
 
cadena ubien larga o
dnsaodinasocnascos
anco ncosndcccdas 
 
nuevas mejoras. incrustadas en el formato y mas blablabala
 
cadena ubien larga o
dnsaodinasocnascos
anco ncosndcccdas 
Responder Con Cita
  #5  
Antiguo 02-11-2010
rrf rrf is offline
Miembro
 
Registrado: ago 2003
Ubicación: S/C Tenerife, España
Posts: 454
Poder: 21
rrf Va por buen camino
Aunque no se ajuste a tu problema, la solución planteada por Ecfisa me pareció muy buena... y sencilla.

Hice una prueba y creo que este ejemplo resuelve lo que preguntas:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  aa : string ;
  cc : integer ;
begin

  Memo1.Lines.Clear ;
  aa := 'Casi nadie le creyó a Casandra, cuando advirtió los peligros que encerraba '+
        'ese caballo gigante de madera en las puertas de Troya para el futuro de su '+
        'civilización. El final de aquella historia -La Ilíada- es conocido. Muchos menos '+
        'hicieron caso a las alertas desesperadas del profesor y catedrático catalán '+
        'Santiago Niño-Becerra, cuando escribía hace 5 años en Internet o en algún '+
        'periódico, que la suerte de este sistema tal y como estaba pautada, también '+
        'estaba escrita. "Alarmista" y "futurólogo" fueron algunos de los motes que se '+
        'granjeó en la comunidad académica cuando decidió darle forma de libro a sus '+
        'intervenciones, con el sugerente y poco feliz título de "El crash de 2010".' ;

   while length ( aa ) > 20
   do
     for cc := 20 downto 0
     do
       if aa [cc] = ' '
       then
         begin
           Memo1.Lines.Add( copy ( aa, 1, cc ) ) ;
           aa := copy ( aa, cc +1, length (aa) ) ;
           break ;
         end;

end;

Espero que te sirva.

Saludos.
Responder Con Cita
  #6  
Antiguo 02-11-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola rrf.

Tu código le va a servir sin dudas.

Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
saltos de linea en word gesjug Varios 3 27-02-2008 14:15:09
¿Como puedo hacer saltos entre rutinas de botones??? (Que trabajo me esta costando... gerardorom C++ Builder 6 15-12-2007 10:33:18
En postgres: Cómo elimino de un campo varchar los saltos de línea PabloTech PostgreSQL 1 24-02-2007 03:36:16
Saltos de linea con stringlist JuanHC Internet 2 30-10-2006 11:25:13
Saltos de Linea en MessageDlg jdangosto OOP 3 16-01-2006 08:40:51


La franja horaria es GMT +2. Ahora son las 11:08:21.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi