Visualización de campos MEMO en un Grid
Hola compañeros.
En lugar de estar en el chiringuito con una cerveza y unas aceitunas, estamos en el despacho con el aire acondicionado programando... y es que siempre han existido clases, y contra más clases... más sabes, y contra más sabes... más trabajas y más responsabilidad, y no directamente proporcional al... parné. Pero en fin, dentro de unos días estaré por Formentera y esta vez prometo perder el teléfono movil. :p Al royo. Necesitaba visualizar datos de un memo en un dbgrid. Historicamente siempre lo tenía pendiente, pues bien, he encontrado un truco en trucomania y mejor o peor lo he adecuado (ya que ese truco no funcionaba como estaba publicado) y con este algoritmo se visualiza perfectamente. Para todos aquellos que lo necesiten, aquí lo tienen. Faltará adecuarlo y seguramente perfeccionarlo, pero esto ya es algo. Suerte a todos y gracias. // De como visualizar y sólo visualizar un campo memo en un grid procedure TFBuscaProveedores.DBGridSQLBusquedaDrawColumnCell( Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var Grid : TStringGrid; Texto : String; Rectangulo : TRect; begin Rectangulo:=Rect; Grid := TStringGrid(Sender); if DataCol = 14 then // Aquí esta la pega de tener que poner esta begin // constante "14" indicativa de la columna del grid Grid.Canvas.FillRect(Rect); // q representa el memo Texto := DBGridSQLBusqueda.Fields[14].Value; DrawText( Grid.Canvas.Handle, PChar(Texto), StrLen(PChar(Texto)), Rectangulo, DT_WORDBREAK); end; end; |
Hola
Dos comentarios a tu codigo 1.- Si en la linea Código:
if DataCol = 14 then Código:
if Column.Field.DataType = ftMemo then 2.- Esto se ha discutido varias veces Código:
Grid := TStringGrid(Sender); TCustomGrid --> TStringGrid --> TDbGrid sino que es TCustomGrid --> TCustomDrawGrid --> TDrawGrid --> TStringGrid TCustomGrid --> TDbGrid Aunque el truco funcione, se tiene que estar seguro de lo que se esta haciendo (para mas info mira algunos hilos que hay en los foros) |
Efectivamente esa era una de las posibles mejoras....
|
La franja horaria es GMT +2. Ahora son las 02:16:43. |
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