Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   DBGrid y Botones (https://www.clubdelphi.com/foros/showthread.php?t=89772)

xangiesaurx 03-02-2016 20:25:59

DBGrid y Botones
 
Buenos días a todos, vengo de nuevo a molestarlos con una duda, realmente soy nueva en Delphi y estoy usando un TDBGrid en Delphi XE5, lo que pasa es que necesito ponerle botones a cierta columna de este y la verdad no se muy bien como, hasta horita lo que hice fue crear el TDBGrid, añadirle las 7 columnas que necesito y asignarle que apartir de la 4 columna su propiedad "ButtonStyle" sea cbsEllipsis.

No se si esto este bien o hay alguna otra manera de realizarlo.
Muchas gracias por su ayuda :)

Casimiro Notevi 03-02-2016 23:06:52

Mira si te sirve algunos de los enlaces del final de página, abajo del todo.

Neftali [Germán.Estévez] 04-02-2016 13:03:47

Cita:

Empezado por xangiesaurx (Mensaje 501837)
No se si esto este bien o hay alguna otra manera de realizarlo.

Si utilizas los componentes estandard, esta es la forma correcta.
Luego puedes utilizar el botón OnEditButtonClick para capturar el evento cuando el usuario pulsa el botón.

Hay otras opciones como las que te comenta Casimiro u otros componentes, pero con esta debería valer.

xangiesaurx 04-02-2016 18:58:44

1 Archivos Adjunto(s)
Ok gracias, lo revisaré, ya que logré hacer que funcionen los botones, pero me doy cuenta que los cbsEllipsis no son lo que necesito, ya que necesito replicar esto: Archivo Adjunto 3307

Revisaré los otros enlaces que me comentan y postearé cualquier duda que salga o si le doy solución a esto, gracias :D

Casimiro Notevi 04-02-2016 19:19:37

Puedes poner el icono que quieras.

xangiesaurx 04-02-2016 20:24:12

No sabía que podia cambiar propiedades del cbsEllipsis, de ser así se puede dejar siempre visible?

bitbow 05-02-2016 23:32:59

Te podria servir el ultimgrid del proyecto JEDI, aunque esto te haria depender de componentes externos a delphi, el ultimgrid tiene opciones para añadir componentes a columnas y personalizarlos.

http://jvcl.delphi-jedi.org/

Saludos.

xangiesaurx 09-02-2016 00:14:53

bitbow, gracias por tu sugerencia, lamentablemente no puedo depender de componentes externos a delphi.
Ahora la duda que me surge es el crear los botones que apareceran en el Grid de manera dinámica, intente este código prueba, pero no me muestra el boton en el frame, alguien sabe el motivo?
Una vez solucionado esto, podré incorporarlo a mi DBGrid :)

Código:

unit Boton;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.StdCtrls,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

type
  TForm1 = class(TForm)
 procedure FormCreate(Sender: TObject);
 procedure OnButton1Click(Sender: TObject);
 procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

  private
    { Private declarations }

  public
    { Public declarations }

  end;

var
  Form1: TForm1;
  Button1: TButton;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Button1.Create(self);
  Button1.Parent:= Form1;
  Button1.Left:=5;
  Button1.Top:=200;
  Button1.OnClick:= OnButton1Click;
  Button1.Caption:= 'Hola';
  Button1.TabOrder:=1;
  Button1.Visible:= True;
end;

procedure TForm1.OnButton1Click(Sender: TObject);
begin
  ShowMessage('Presionaste');
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if Assigned (Button1) then Button1.Free

end;

end.


olbeup 09-02-2016 08:29:36

Hola xangiesaurx,

No estas creando el botón correctamente, sustituye el:
Código Delphi [-]
Button1.Create(Self)
por
Código Delphi [-]
Button1 := TButton.Create(Self);
Un saludo.

Lepe 09-02-2016 19:47:33

El button1.Parent, tendrás que asignarle "el frame" que quieras, el Grid, o donde quieres que salga.

Dado que lo has creado con el parámetro "Self" en TButton.Create(Self), no hace falta que lo liberes en el destroy, eso lo hará su dueño, el Self, que es el Form donde se ha creado.

Lo que intuyo es que al hacer un scroll del Grid, los botones se van a quedar fijos y no creo sea lo que quieras.

En ese Delphi no puedo ayudarte, ya que no lo tengo. Otra cosa es pintar el botón en el recuadro de una columna, así "hace parecer que es un botón", pero solo es pintura. Ojalá esto te sirva: www.clubdelphi.com/foros/showthread.php?t=74688

Saludos

xangiesaurx 13-02-2016 02:10:00

olbeup, muchas gracias, en cuanto hice ese cambio apareció mi botón, muchísimas gracias :)

Ahora estoy en la parte mas difícil (para mí), no se como indicar una celda especifica del DBGrid, es decir, indicar que en la celda o columna tal aparezca ese botón que se crea dinamicamente.
Intentare seguir lo que comentó Lepe para ver si me sale, ero igual me gustaría saber si alguien sabe como hacer para que ese botón quede dentro de una celda especifica.

Gracias


La franja horaria es GMT +2. Ahora son las 09:44:11.

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