Ver Mensaje Individual
  #3  
Antiguo 13-06-2008
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Reputación: 20
Ivanzinho Va por buen camino
Puedes probar de esta manera

Código Delphi [-]
procedure TForm1.dbGrid1EditButtonClick(Sender: TObject);
begin
   //Si el campo seleccionado es el campo blob mostramos el frame
   //con los datos
   if dbGrid1.SelectedField = TablaCampoBlob then
      CrearFrameBlob('CampoBlob', DataSource);
end;

//Crea un frame con un memo donde se puede modificar el campo blob
procedure TForm1.CrearFrameBlob(Campo : string; Source : TDataSource);
const
   ancho = 250;
   alto = 140;
var
   Frm : TForm;
   Memo : TDBMemo;
begin
   Frm := TForm.Create(nil);
   try
      Frm.Width := ancho;
      Frm.Height := alto;
      Frm.Top := Mouse.CursorPos.Y;
      Frm.Left := Mouse.CursorPos.X - ancho;
      if Frm.Left < self.Left then
         Frm.Left := self.Left;
      if Frm.Top + alto > self.Height + self.Top then
         Frm.Top := self.Height + self.Top - alto;
      Frm.BorderStyle := bsToolWindow;
      Frm.Caption := campo;
      Memo := TDBMemo.Create(nil);
      try
         Memo.Parent := Frm;
         Memo.Align := alClient;
         Memo.DataSource := Source;
         Memo.DataField := Campo;
         Memo.ReadOnly := true;
         Memo.ScrollBars := ssVertical;
         Frm.ShowModal;
      finally
         Memo.Free;
      end;
   finally
      Frm.Free;
   end;
end;

//En el dibujado de las celdas creas un rectangulo con el texto del campo
//que se situe sobre la celda requerida
procedure TForm1.dbGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
var
   R : TRect;
begin
   R:=Rect;
   Dec(R.Bottom,2);

   if Column.Field = TablaCampoBlob then
      begin
         if not (gdSelected in State) then
            dbgVentas.Canvas.FillRect(Rect);

         DrawText(dbGrid1.Canvas.Handle, pchar(TablaCampoBlob.AsString),
                  length(TablaCampoBlob.AsString), R, DT_WORDBREAK);
      end;
end;

Espero que te sirva.

Un saúdo.
__________________
Si no lees esto no vivirás tranquilo
Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao)

Última edición por Ivanzinho fecha: 13-06-2008 a las 15:40:51.
Responder Con Cita