Utilizamos cookies propias y de terceros. Al navegar entendemos que aceptas el uso de cookies. +Info.
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Usuario
· Wiki

Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Mostrar botón en campo MEMO de DBGrid en Delphi
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Mostrar botón en campo MEMO de DBGrid en Delphi

Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Mostrar botón en campo MEMO de DBGrid en Delphi Responder citando

Tengo un programa de facturación hecho en Delphi, tengo un DBGrid en el que no añado las columnas en tiempo de diseño, sino que dejo que se añadan automáticamente en tiempo de ejecución. Pero ahora me encuentro con un pequeño problema, quiero que en los campos de tipo de datos MEMO aparezca un botón para que el usuario pueda ver el contenido en otra ventana. El problema es que si no agrego las columnas en tiempo de diseño para indicar que en algunas aparezca en ButtonStyle "cbsEllipsis" ¿cómo se puede hacer esto?
MensajePublicado:
Jue Ene 08, 2009 2:38 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Mostrar botón en campo MEMO de DBGrid en Delphi Responder citando



Anuncios



varios escribió:
Tengo un programa de facturación hecho en Delphi, tengo un DBGrid en el que no añado las columnas en tiempo de diseño, sino que dejo que se añadan automáticamente en tiempo de ejecución. Pero ahora me encuentro con un pequeño problema, quiero que en los campos de tipo de datos MEMO aparezca un botón para que el usuario pueda ver el contenido en otra ventana. El problema es que si no agrego las columnas en tiempo de diseño para indicar que en algunas aparezca en ButtonStyle "cbsEllipsis" ¿cómo se puede hacer esto?


Puedes poner el siguiente código Delphi en la propiedad OnDrawColumnCell:

Código:

procedure TformMenuPrincipal.gridDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
  try
    if Column.Field.DataType = ftmemo then
      Column.ButtonStyle := cbsEllipsis;
  except
  end;
end;


Con esto conseguiremos que cuando la columna sea de tipo "ftmemo", con el código Column.ButtonStyle := cbsEllipsis; le indicamos que ponga un botón con tres puntos "...".

Nota: "grid" es el nombre que le hemos dado al TDBGrid de Delphi.


Ultima edición por alonsojpd el Jue Ene 08, 2009 2:54 pm, editado 1 vez
MensajePublicado:
Jue Ene 08, 2009 2:43 pm
Top of PageVer perfil de usuario
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Re: Mostrar botón en campo MEMO de DBGrid en Delphi Responder citando



Anuncios



alonsojpd escribió:

Puedes poner el siguiente código Delphi en la propiedad OnDrawColumnCell:

Código:

procedure TformMenuPrincipal.gridDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
  try
    if Column.Field.DataType = ftmemo then
      Column.ButtonStyle := cbsEllipsis;
  except
  end;
end;


Con esto conseguiremos que cuando la columna sea de tipo "ftmemo", con el código Column.ButtonStyle := cbsEllipsis; le indicamos que ponga un botón con tres puntos "...".


Ok, funciona estupendamente, ahora tengo la otra duda ¿cómo muestro en otra ventana el contenido del campo MEMO donde el usuario ha pulsado el botón con los tres puntos? ¿cómo puedo saber en qué campo está el usuario?
MensajePublicado:
Jue Ene 08, 2009 2:46 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Mostrar botón en campo MEMO de DBGrid en Delphi Responder citando



Anuncios



varios escribió:
Ok, funciona estupendamente, ahora tengo la otra duda ¿cómo muestro en otra ventana el contenido del campo MEMO donde el usuario ha pulsado el botón con los tres puntos? ¿cómo puedo saber en qué campo está el usuario?


1. Añade un nuevo formulario a tu aplicación, llámalo, por ejemplo formMostrarMemo, añade a este formulario un componente de tipo TMemo, llámalo, por ejemplo, txtMemo.

2. En el formulario donde tienes el TDBGrid, agrega al evento EditButtonClick del TDBGrid el siguiente código:

Código:

procedure TformMenuPrincipal.gridEditButtonClick(Sender: TObject);
var
  f : TForm;
begin
  F := application.findcomponent('formMostrarMemo') as TForm;
  if Assigned(F) then
  begin
    formMostrarMemo.txtMemo.Text := grid.SelectedField.AsString;
    f.showmodal;
  end
  else
  begin
    application.createform(tformMostrarMemo, formMostrarMemo);
    formMostrarMemo.txtMemo.Text := grid.SelectedField.AsString;
    formMostrarMemo.showmodal;
  end;
end;


Con esto conseguirás que cuando el usuario pulse el botón ... en un campo de tipo MEMO del TDBGrid muestre la ventana formMostrarmemo y con "grid.SelectedField.asString" le asignará el valor del MEMO actual.

Nota: en toda esta explicación "grid" es el nombre que le hemos dado al TDBGrid.
MensajePublicado:
Jue Ene 08, 2009 2:52 pm
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Este sitio web NO CONTIENE malware, todos los programas con código fuente aquí. Autor: Alonso Javier Pérez Díaz Google+ Síguenos en Google+