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 03-04-2009
carlos estrada carlos estrada is offline
Registrado
 
Registrado: ago 2006
Posts: 5
Poder: 0
carlos estrada Va por buen camino
Insertar linebreak en tiempo de ejecución

Tengo un problema al querer insertar un salto de linea en el caption de un header de la columna de un TNextGrid; la colección no tiene una propiedad WordWrap pero aún así en tiempo de diseño con un simple Ctrl+Enter se consigue el objetivo de separar las lineas donde uno desee:



Pero en tiempo de ejecución al crear las columnas dinamicamente no hay forma de insertar ese linebreak; concatenar #13#10 solo inserta un par de cuadritos en el encabezado

¿alguien se ha topado con algo similar?,

PD. pensé copiar el salto de linea y colocarlo directamente en la variable (como lo he hecho por ejemplo en T-SQL para ubicar los saltos de linea) pero Delphi marca un error.
Responder Con Cita
  #2  
Antiguo 03-04-2009
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Si, pero la solucion es muy facil, mira:

Código Delphi [-]
procedure SetNombreMultiLinea(Grilla: TNextGrid; Linea1,Linea2: String; Alto, IndexColumna: Integer);
begin
     Grilla.HeaderSize := Alto;
     Grilla.Columns[IndexColumna].Header.Caption := Linea1 + chr(13)+chr(10) + Linea2; 
end;

Nota: recorda que el Alto debe ser suficiente para visualizar ambas lineas, sino solo seguiras viendo una linea.

Ejemplo de uso:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  SetNombreMultiLinea(NextGrid1,'HOLA','CHANGOS',50,0);
end;

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #3  
Antiguo 03-04-2009
Avatar de paladincubano
paladincubano paladincubano is offline
Miembro
 
Registrado: jul 2007
Posts: 147
Poder: 17
paladincubano Va por buen camino
Si quieres escribir menos, no uses el chr, y ponlo durectamente.

Eje:

Código Delphi [-]
Label1.Caption := 'Hola'+#13#10+'2da linea';

#10 salta de linea y #13 retorna el carro al principio de linea (normalmente lo hace sin el #13

Osea, solo bastaria poner un #10, poniendo #10#10#10 te salta 3 lineas.

saludos.

PD: ignora esto, no habia visto el final de tu post, sorry.
Responder Con Cita
  #4  
Antiguo 03-04-2009
carlos estrada carlos estrada is offline
Registrado
 
Registrado: ago 2006
Posts: 5
Poder: 0
carlos estrada Va por buen camino
Cita:
PD: ignora esto, no habia visto el final de tu post, sorry.
Exactamente, ese es el problema, que el obvio #13#10 ( o chr(13)+chr(10)) no funciona ....

Eso es lo que me extraña, que en tiempo de diseño si lo hace y en ejecución no

Responder Con Cita
  #5  
Antiguo 03-04-2009
Avatar de paladincubano
paladincubano paladincubano is offline
Miembro
 
Registrado: jul 2007
Posts: 147
Poder: 17
paladincubano Va por buen camino
Probastes la solucion que te daban mas arriba?
Responder Con Cita
  #6  
Antiguo 03-04-2009
carlos estrada carlos estrada is offline
Registrado
 
Registrado: ago 2006
Posts: 5
Poder: 0
carlos estrada Va por buen camino
La de poner la concatenación en una función? mmmm, no, ya que debe dar el mismo resultado ...

pero nomás por no dejar dejo lo hago .....


EDITO:

Lo dicho, hace exactamente lo mismo. ¿Qué diferencia habrá? mmmmmm ¿por qué esos cuadros si lo hago durante la ejecución del programa ....?

EDITO2:

Pues he estado jugando con esa función un rato .... ¡y ya funcionó! .... aún no entiendo la lógica del asunto ... si el contenido de la función lo coloco dentro de la rutina no lo hace pero fuera si ...., igual si le mando de parámetros el resultado de otra rutina no lo hace pero si le mando variables estring si ... en fin, lo bueno es que finalmente funcionó .... ¡gracias a ambos!

Última edición por carlos estrada fecha: 03-04-2009 a las 17:14:48.
Responder Con Cita
  #7  
Antiguo 03-04-2009
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por carlos estrada Ver Mensaje
EDITO2:

Pues he estado jugando con esa función un rato .... ¡y ya funcionó! .... aún no entiendo la lógica del asunto ... si el contenido de la función lo coloco dentro de la rutina no lo hace pero fuera si ...., igual si le mando de parámetros el resultado de otra rutina no lo hace pero si le mando variables estring si ... en fin, lo bueno es que finalmente funcionó .... ¡gracias a ambos!
Que bueno que encontraste una solución, pero ¿podrías mostrarnos el código que no funcionó?

Gracias.

Al González.
Responder Con Cita
  #8  
Antiguo 03-04-2009
carlos estrada carlos estrada is offline
Registrado
 
Registrado: ago 2006
Posts: 5
Poder: 0
carlos estrada Va por buen camino
Pues mira .... como mencioné estuve "trasteando" un poco diferentes formas para encontrar algo que funcionará, la función a primera instancia no funcionó de esta forma:
Código Delphi [-]
GridActivo.ClearRows;
  For i:=GridActivo.Columns.Count-1 downto 9 do
      GridActivo.Columns.Delete(i);

  For i:=3 To DM.spTransitos.FieldCount-1 do Begin
      Linea1 := Copy(DM.spTransitos.Fields[i].DisplayName,1,Pos(' {',DM.spTransitos.Fields[i].DisplayName));
      linea2 := Copy(DM.spTransitos.Fields[i].DisplayName,Pos('{',DM.spTransitos.Fields[i].DisplayName),50);

      GridActivo.Columns.Add(TNxNumberColumn, IntToStr(GridActivo.Columns.Last.Index));

SetNombreMultiLinea(GridActivo,Linea1,Linea2,50,GridActivo.Columns.Last.Index);
  End;

Donde dejé el código que elimina las columnas para volverlas a crear, cuando dije que ya funcionaba fue por que entre prueba y prueba comenté ese FOR. Luego cai en cuenta que si funcionaba al actualizar columnas ya creadas y no cuando eran columnas generadas al vuelo, pero ya no postie eso por que definitivamente tenia que ser algo difernte entre las columnas creadas por código y las que cree en tiempo de diseño. Poco después de analizarlo vi que mi error era que debía colocar en true la propiedad Multiline de Header .
Ya con este cambio el clásico #13#10 funciona perfectamente.

La verdad este fue un error tonto que me ocurrió por hacer un nuevo proyecto usando un ejemplo como plantilla, no volverá a ocurrir
Responder Con Cita
  #9  
Antiguo 04-04-2009
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
No te preocupes, mi inquisición fue en aras de evitar la concepción de un mito.
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
Insertar y modificar al mismo tiempo ! hecospina Firebird e Interbase 4 17-09-2008 13:40:28
datos en tiempo de ejecucion. angelp4492 Varios 3 11-02-2008 00:16:42
Webservice en tiempo de ejecución uricana Internet 0 13-11-2006 08:59:57
Insertar banda en fasreport en tiempo ejecucion Oni Impresión 0 03-11-2005 15:40:33
Tiempo de ejecucion? st7 Varios 3 11-05-2004 22:03:28


La franja horaria es GMT +2. Ahora son las 18:05:36.


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