Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-06-2008
Angel Vicente Angel Vicente is offline
Miembro
 
Registrado: may 2006
Posts: 15
Poder: 0
Angel Vicente Va por buen camino
Editar memo en DBGrid

Hola a todos...

Estoy haciendo un programa que tiene un DBGrid con campos tipo memo, y me gustaria editarlos, pero dentro de la celda del DBGrid; lo que he encontrado, es la forma de hacerlo, leyendo el contenido del campo y editandolo en un formulario diferente al del DBGrid, para despues sustituir el valor del campo, pero me gustaria hacerlo directamente en la propia celda.

Saludos y gracias de antemano
Responder Con Cita
  #2  
Antiguo 13-06-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola Angel Vicente, para mostrar tu campo memo puedes utilizar el evento OnGetText de tu campo y para editar el evento OnSetText de tu campo. Aquí te pongo el ejemplo:

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

procedure TForm1.Table1CampoMemoSetText(Sender: TField;
  const Text: String);
begin
 Sender.AsString := Text;
end;


Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 13-06-2008
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Poder: 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
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Editar sobre DBGrid Ignacio Varios 7 25-07-2012 18:13:20
Editar un DBGrid luxus Conexión con bases de datos 4 23-01-2007 21:49:25
Editar Clase Dbgrid amadis OOP 1 16-01-2006 20:15:56
Como editar campo memo con componente DBGRID mateamargo OOP 1 13-01-2004 23:24:41
Al editar memo, se posiciona al principio. setry2 OOP 1 17-05-2003 13:33:54


La franja horaria es GMT +2. Ahora son las 00:06:29.


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