Ir al contenido


Foto

[RESUELTO] Como hacer un TEdit con mas de una linea


  • Por favor identifícate para responder
10 respuestas en este tema

#1 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 776 mensajes
  • LocationPinar del Río, Cuba

Escrito 13 octubre 2009 - 09:29

Hola a todos
Pues eso, necesito un Edit que pueda visualizar mas de una linea de texto, pues en el se editará un texto largo (puede llegar a 255 caracteres) pero el control TEdit estandar no puede ser tan largo, pues no cabria en el formulario

Existe algun otro control o se podrá solucionar con el mismo TEdit ?  *-)

Tambien necesito lo mismo para un DBGrid, o al menos que cuando señale con el Mouse el registro, me salga un Hint con el texto completo

  • 0

#2 razadi

razadi

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 681 mensajes
  • LocationMéxico D.F.

Escrito 13 octubre 2009 - 09:40

Hola JoAnCa, ya probaste el TMemo, en este puedes escribir una gran cantidad de texto, pruebalo.

Referente al DBGrid, este te soporta hasta 255 car. en un campo sin que lo considere como blob, revisa las propiedades de los TFields y de tu base de datos.

Ahora que si quieres puedes poner en el evento onclick de ese campo un procedure que te abra una ventana emergente con un TDBMemo relacionado al campo en cuestión para que te muestre el valor de lo que tienes en ese campo.

espero haberme explicado. saludos.
  • 0

#3 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 776 mensajes
  • LocationPinar del Río, Cuba

Escrito 13 octubre 2009 - 09:54

Muchas gracias por tu pronta respuesta
Pues si, probe con el TMemo y me sirvió, tambien me sirve con el TRichEdit que me recomendo Contraveneno

Pero ahora tengo otra duda, pues en la BD (en Access) le puse el tipo de dato Memo, pero cuando lo pongo en el formulario no me deja escribir nada, ni tampoco en el DBGrid
Es que hay que hacer algo especial para que me deje editarlo?
Como es que puedo editar un campo de tipo Memo?
  • 0

#4 razadi

razadi

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 681 mensajes
  • LocationMéxico D.F.

Escrito 13 octubre 2009 - 10:00

Pero ahora tengo otra duda, pues en la BD (en Access) le puse el tipo de dato Memo, pero cuando lo pongo en el formulario no me deja escribir nada, ni tampoco en el DBGrid
Es que hay que hacer algo especial para que me deje editarlo?
Como es que puedo editar un campo de tipo Memo?


Efectivamente si en Acces lo manejas como memo estamos hablando de un campo tipo blob que el DBGrid no reconoce, por que te comento, podrías hacerlo mediante un campo TDBMEmo, este si te lo permite editar.

Haz la prueba y con eso podrías hacer que al entrar al campo que contiene el Memo en tu DBGrid abras una forma que solo contenga un componente TDBMemo y que este ligado a tu DataSource que relaciona la tabla y tu DBGrid y por supuesto al field correspondiente.

Saludos.
  • 0

#5 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 776 mensajes
  • LocationPinar del Río, Cuba

Escrito 13 octubre 2009 - 10:11

Pues si, la entrada y Modificacion de datos, la hago a traves de otros formularios, en el que empleo el DBMemo, y ahi lo puedo editar

Pero lo que necesito es que tambien se muestre el texto en el DBGrid, en lugar de ponerme (MEMO), si no hay manera de hacerlo entonces tendré que cambiar en la BD el tipo de dato a String, aunque este me permita solo 255 caracteres  :|
  • 0

#6 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 13 octubre 2009 - 10:33

Hola
Aveces he hecho algo así.
Tal vez te sirva esta trampa.
Saludos

Archivos adjuntos


  • 0

#7 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 776 mensajes
  • LocationPinar del Río, Cuba

Escrito 13 octubre 2009 - 11:18

Muy ingeniosa tu trampa, ya habia probado algo parecido, lo que en lugar de poner el DBMemo en el mismo DBGrid, lo puse encima y a todo el ancho del DBGrid, lo consulte con el cliente y me dijo que así mismo le servía, pero tambien le voy a enseñar tu metodo para ver cual de los dos le gusta mas

Lo que a tu "trampa" le agregaré que no se pueda llegar a ella para que el cursor no se pierda
  • 0

#8 andres1569

andres1569

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 431 mensajes

Escrito 13 octubre 2009 - 02:24

Hola JoAnCa, aunque ya lo tienes resuelto, aprovecho el hilo para señalar otra posibilidad, que consiste en crear un campo calculado de tipo string (ponle la propiedad Size a 255 por ejemplo). En el evento OnCalcFields haces:

MiCampo.AsString := CampoMemo.AsString;

En el DBGrid incluyes una columna que acceda a MiCampo y no al CampoMemo y de esta forma logras que te muestre el contenido del Memo camuflado como un string, aunque obviamente no lo puedes editar desde el Grid. Y también evitamos crear el campo como String (255) en la base de datos, cosa que supone a veces quedarse corto y otras ocupar un espacio innecesario.

Un saludo.
  • 0

#9 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 776 mensajes
  • LocationPinar del Río, Cuba

Escrito 13 octubre 2009 - 02:46

Hola JoAnCa, aunque ya lo tienes resuelto, aprovecho el hilo para señalar otra posibilidad, que consiste en crear un campo calculado de tipo string (ponle la propiedad Size a 255 por ejemplo). En el evento OnCalcFields haces:

MiCampo.AsString := CampoMemo.AsString;


Tambien es válida esa respuesta, pero tiene el inconveniente de que no se podran ver cadenas de texto muy largas

Hola
Aveces he hecho algo así.
Tal vez te sirva esta trampa.
Saludos


Pues le mostré las dos variantes y le gustó mas la tuya, así se puede ver el texto completo y queda dentro del mismo DBGrid

(y)

  • 0

#10 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 13 octubre 2009 - 05:03

Hola JoAnCa, aunque ya lo tienes resuelto, aprovecho el hilo para señalar otra posibilidad, que consiste en crear un campo calculado de tipo string (ponle la propiedad Size a 255 por ejemplo). En el evento OnCalcFields haces:

MiCampo.AsString := CampoMemo.AsString;

En el DBGrid incluyes una columna que acceda a MiCampo y no al CampoMemo y de esta forma logras que te muestre el contenido del Memo camuflado como un string, aunque obviamente no lo puedes editar desde el Grid. Y también evitamos crear el campo como String (255) en la base de datos, cosa que supone a veces quedarse corto y otras ocupar un espacio innecesario.

Un saludo.


Excelente Tip andrés, muy interesante (y)
  • 0

#11 razadi

razadi

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 681 mensajes
  • LocationMéxico D.F.

Escrito 18 octubre 2009 - 03:01

Ahora, se ocurrio otras solución, digamos un poco más "especial", ya intentaste usar el componente TDBCtrlGrid, esta en la paleta Data controls, este es un contenedor de componentes de datos, es decir podrias poner un DBMemo y unos DBEdit, y en runtime este parece un DBGrid.

hace años que use este componente, mmm, digamos que es bueno.

Ahora que si qiueres algo más elabrado o de mejor presentación, te recomiendo revises la suite de componentes DevExpress el dxGrid, no tiene comparación, eh.

Aquí te dejo la liga por si le quieres hechar un vistaso.
http://devexpress.co.../ExQuantumGrid/

si amigo todo esto lo puede hacer ese componente.

Bueno espero que con esto tengas mas opciones por si tu solución no te convence al 100%.

Saludos.



  • 0




IP.Board spam blocked by CleanTalk.