Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-02-2005
Tecnic2 Tecnic2 is offline
Miembro
 
Registrado: may 2004
Posts: 155
Poder: 20
Tecnic2 Va por buen camino
Question Campo MEMO en un DBGrid

Hola a todos, quisiera saber cómo lo puedo hacer para que en un DBGrid me aparezca el contenido de un campo de tipo memo, ya que en éstos momentos en lugar de salirme el contenido me sale la palabra "(MEMO)".

Muchas gracias por adelantado.
Responder Con Cita
  #2  
Antiguo 08-02-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.265
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Tecnic2
Hola a todos, quisiera saber cómo lo puedo hacer para que en un DBGrid me aparezca el contenido de un campo de tipo memo, ya que en éstos momentos en lugar de salirme el contenido me sale la palabra "(MEMO)"
Puedes hacerlo de forma manual, o utilizando componentes que ya te lo solventen. Por ejemplo el Grid de las RxLib te lo hace de forma automática. Si deseas programarlo tú (porque no quieres instalar otros componetes, por ejemplo) debes hacerlo en el evento OnDrawColumnCell del DBGrid; Se trata de en ese evento repintar el texto de la celda y en lugar de lo que había utilizar el FieldMemo. Algo así:

Código Delphi [-]
   // Cadena del campo
   Str := TBlobField(Column.Field).AsString;
 ...
   ACanvas.TextRect(Rect, Left, Rect.Top + DY, Str);

Si te interesa ésta opción dilo y si tienes problemas intentaré exponerlo más detalladamente; Otra opción es buscar en los foros, porque seguro que algo se ha comentado ya.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 08-02-2005
Tecnic2 Tecnic2 is offline
Miembro
 
Registrado: may 2004
Posts: 155
Poder: 20
Tecnic2 Va por buen camino
Post Me interesa

Pues la verda es que si, que me interesa ésta opción de hacer-lo en tiempo de ejecución.
Responder Con Cita
  #4  
Antiguo 08-02-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.265
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Tecnic2
Pues la verda es que si, que me interesa ésta opción de hacer-lo en tiempo de ejecución.
Bueno, pues sería algo parecido a lo que sigue; En el evento OnDrawColumnCell programa lo siguiente:

Código Delphi [-]
 const
   DX = 5;
   DY = 2;
 var
   Str:String;
 begin
   // Es un Blob?
   if(Column.Field is TMemoField) then begin
     Str := TMemoField(Column.Field).AsString;
     DBGrid1.Canvas.TextRect(Rect, Left + 8, Rect.Top + DY, Str);
   end;

Si hay varias columnas de memo en el Grid y no quieres hacerlo con todas, también puedes utilizar un parámetro llamado DataCol del evento que te deuelve el índice de la columna que se está pintando.

Pruébalo y haz variantes.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 08-02-2005
bustio bustio is offline
Miembro
 
Registrado: oct 2003
Posts: 231
Poder: 21
bustio Va por buen camino
Pues si....

Cita:
Empezado por Neftali
Si te interesa ésta opción dilo y si tienes problemas intentaré exponerlo más detalladamente; Otra opción es buscar en los foros, porque seguro que algo se ha comentado ya.
Yo tengo el mismo problema... Busque en el Foro y me sugieren usar el DBMEMO, soloque para mi fin no me sirve. El RxLIB tampoco me es solucion.. asi que me gusta mas tu exposicion de como hacerlo manualmente.. podrias explicarmelo y exponermelo mas detallado??

GRACIAS!!!

Lazaro Bustio Martinez..
Responder Con Cita
  #6  
Antiguo 08-02-2005
bustio bustio is offline
Miembro
 
Registrado: oct 2003
Posts: 231
Poder: 21
bustio Va por buen camino
Respondiendo....

Cita:
Empezado por Neftali
Pruébalo y haz variantes.
Exactamente eso fue lo que hice. Tome el parametro DataCol para solo hacerle el pintado a la primera columna y funciono.. tu ejemplo esta muy bien y muy bueno. Pero tiene un defecto.. al menos a mi me lo hace. El texto cuando lo lee y lo muestra no se ve completo... solo a partir del 2 caracter y cuando trato de marcarlo con el Mouse para darle "<-" con el cursor vuelve a mostrar el valor: (MEMO).

Como puedo solucionar esto????

GRACIAS!!

Lazaro Bustio Martinez..
Responder Con Cita
  #7  
Antiguo 08-02-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.265
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por bustio
Exactamente eso fue lo que hice. Tome el parametro DataCol para solo hacerle el pintado a la primera columna y funciono.. tu ejemplo esta muy bien y muy bueno. Pero tiene un defecto.. al menos a mi me lo hace. El texto cuando lo lee y lo muestra no se ve completo... solo a partir del 2 caracter y cuando trato de marcarlo con el Mouse para darle "<-" con el cursor vuelve a mostrar el valor: (MEMO).
Lo de que se vea el 2º caracter lo controla la constante(DX):

Código Delphi [-]
 DBGrid1.Canvas.TextRect(Rect, Left + DX, Rect.Top + DY, Str);

Revisa que la hayas colocado Bien. Al entrar te vuelve a mostrar (MEMO) porque ésta soilución sólo sirve para Visualizar, no para editar.

Otra opción (que tb permite editar) es la siguiente; Añadir al TTable/TQuery/... los Fields y programar los atributos OnGetText y OnSetText del TField(en éste caso un TMemoField) con el siguiente código:

Código Delphi [-]
 procedure TForm1.Table1NotesGetText(Sender: TField; var Text: String; DisplayText: Boolean);
 begin
   Text:= Trim (Sender.asString);  
 end;
 
 procedure TForm1.Table1NotesSetText(Sender: TField; const Text: String);
 begin
   Sender.AsString := Text;
 end;

Es mejorable, ya que al editar aparecen los saltos de línea pero puede servir.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #8  
Antiguo 09-02-2005
Tecnic2 Tecnic2 is offline
Miembro
 
Registrado: may 2004
Posts: 155
Poder: 20
Tecnic2 Va por buen camino
Question Gracias, lo probaré. [Pregunta]

Otra pregunta:

Tengo un par de campos en mi DBGrid que me deben mostrar una información en formato de hh:mm:ss.
El campo de la base de datos Access es Fecha/Hora, y el formato es Hora Larga, pero en mi DBGrid me aparece 30/12/1899 12:34:12, y yo solo quiero que me aparezca la hora.

Muchas gracias por adelantado.
Responder Con Cita
  #9  
Antiguo 09-02-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.265
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Si defines los TField como se ha comentado antes, y accedes a las propiedades del TField correspondiente a tu campo hay una propiedad que te permite definir el formato (Display...., Masked..., no recuerdo el nombre, pero seguro que cuando las tengas en pantalla la identificas enseguida).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #10  
Antiguo 17-01-2009
yo_coco_py yo_coco_py is offline
Registrado
 
Registrado: may 2005
Posts: 8
Poder: 0
yo_coco_py Va por buen camino
solucion en una linea de codigo

aca esta la solucion y en una sola linea de codigo.. http://delphi.about.com/library/weekly/aa030105a.htm
Funciona super bien..
Si tienen alguna duda y les puedo ayudar, con mucho gusto lo hare..
Saludos..
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 22:52:39.


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