FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problema DBGrid y MEMO
Hola a todos, se me plantea el siguiente problema:
Tengo un DBGrid y en uno de los campos es un tipo MEMO. Como sabreis este campo muestra (WIDEMEMO) en lugar de mostrar la informacion. Pues bien, googleando un poco he encontrado lo siguiente: void __fastcall TfrmPrincipal:BGrid3DrawColumnCell(TObject *Sender, const TRect &Rect, int DataCol, TColumn *Column, TGridDrawState State) { // Con esto mostramos la descripción del MEMO en el dbgrid if (Column->Field->FieldName == "Descripción") { DBGrid3->Canvas->FillRect(Rect); DBGrid3->Canvas->TextRect(Rect, Rect.Left, Rect.Top, Column->Field->Value); } } el cual muestra perfectamente el contenido del campo MEMO. El problema viene cuando se hace clic q se sobreescribe encima de la informacion (WIDEMEMO). TAmbien desactivo la opcion de editar. Se os ocurre alguna forma de evitar esto?? Muchas gracias y un saludo! |
#2
|
|||
|
|||
tengo problemas con el explorer 9 y me ha tocado coger el portatil para continuar en el explorer 8 :S
|
#3
|
||||
|
||||
Hola.
Borré mi mensaje anteriór por que ví que agregaste el problema, pero fuiste más rápido... Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#4
|
||||
|
||||
Hola mizzard.
Si utilizas el DBGrid sólo para mostrar datos, desde el Object Inspector pone en la propiedad Options , dgEditing = False Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#5
|
|||
|
|||
Cita:
PD: En Explorer 9 no puedo escribir nada |
#6
|
||||
|
||||
Hola.
Que extraño... Lo único que se me ocurre es que actives la opción dgRowSelect de ese modo dgEditing es ignorada. Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#7
|
|||
|
|||
Cita:
Tambien lo he probado :S.... y alguna opcion para que cuando haga clic con el raton q no haga nada?? como detectar el evento y q no haga nada... No se me ocurre nada... |
#8
|
||||
|
||||
Hola mizzard.
Lamentablemente para el TDBGrid no funciona ReleaseCapture, pero todavía hay algo que podés hacer para que no aparezca [WIDEMEMO] y es aprovechar el evento OnGetText del campo Descripcion. Primero que nada, ya no necesitaras del evento OnDrawColumnCell, así que desactivalo. Si tenés creado el campo persistente sólo tenés que hacer doble click sobre el evento OnGetText del mismo y agregar dos líneas si no, lo podés asignar manualmente por ejemplo en el evento OnCreate del form como en el código siguiente: Código:
void __fastcall TForm1::DescripcionGetText(TField *Sender, AnsiString &Text, bool DisplayText) { TStringField *Fd = static_cast<TStringField*>(Sender); Text = Fd->AsString; } /* (No es necesario si está asignado desde el campo persistente) */ void __fastcall TForm1::FormCreate(TObject *Sender) { DataSet->FieldByName("Descripcion")->OnGetText = DescripcionGetText; } Un saludo.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#9
|
||||
|
||||
Hola.
Me olvidaba... para no dejar cabos sueltos: Código:
void __fastcall TForm1::FormDestroy(TObject *Sender) { DataSet->FieldByName("Descripcion")->OnGetText = NULL; }
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#10
|
|||
|
|||
Hola, perdona por la tardanza, que he estado liado en otras cosas :S.
Comentar que aunque este desactivada la opcion de editar en el grid, sí que se puede hacer clic por lo que con lo q te comento q hago aparece el (WIDEMEMO). Intente llevar a cabo tu solucion, pero la verdad es q me perdia, intuyo que tenia que utilizar otro componente (TADODataset?), lo que pasa es q nunca lo he usado y no paraba de salirme errores de compilacion :S. Yo utilizo ADOQuerys con DataSources a partir de un TADOConnection. Al final se me ocurrio una "chapuza" que medio lo subsana (aunq no del todo) que es deshabilitar el grid con el evento onMouseEnter y habilitar la con el evento onMouseLeave :P Sé que no es una buena solucion, pero como se trata de algo puramente estetico no quiero darle demasiada importancia. No obstante quiero mostrarte mi gratitud y agradecerte si me pudieras explicar un poco con mas detalle o con ejemplos la propuesta de solucion que me has dixo Muchas gracias y un saludo! |
#11
|
||||
|
||||
Hola mizzard.
Voy a tratar de explicarte la forma más simple, mediante los campos persistentes. Sobre el componente ADOQuery haces click con el botón derecho del mouse y de la ventana emergente elegís Fields Editor. Te abre una ventana donde nuevamente haces click con botón derecho y elegis Add All Fields. Acabas de crear todos los campos persistentes. En esa misma ventana, seleccionas tu campo MEMO (creo que es Descripcion), luego te vas al Object Inspector y haces click sobre la pestaña Events y doble click sobre el evento OnGetText, Builder te creará de forma automática algo similar a: Código:
void __fastcall TForm1::ADOQuery1DescripcionGetText(TField *Sender, AnsiString &Text, bool DisplayText) { } Código:
TStringField *Fd = static_cast<TStringField*>(Sender); Text = Fd->AsString; Si hay algo en lo que no me haya explicado bién, no dudes en volver a preguntar. Un saludo.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#12
|
|||
|
|||
Claro como el agua y perfectamente funcional.
Otro problema que tengo relacionado con el campo MEMO lo he iniciado en este post: http://www.clubdelphi.com/foros/showthread.php?t=76753 En donde tengo que mostrar el campo memo en un informe usando Rave Reports. Tenia la esperanza que al hacer lo que me has indicado, se viera bien en Rave... pero va a ser q no Si le puedes echar un ojo a ver q se te ocurre estare muy agradecido. Muchas gracias por toda la ayuda recibida tanto en este post como en los anteriores. Un abrazo! |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
(MEMO) En DBGrid | FunBit | OOP | 4 | 17-01-2009 21:37:02 |
Editar memo en DBGrid | Angel Vicente | OOP | 2 | 13-06-2008 15:38:10 |
problema con campo memo en un dbgrid | dcamp | Conexión con bases de datos | 3 | 24-10-2005 14:51:49 |
Dbgrid & Memo | jymy788 | Varios | 5 | 10-02-2005 18:39:38 |
memo en dbgrid | JoseQ | Conexión con bases de datos | 5 | 22-07-2004 10:58:10 |
|