Botão dentro de um dbgrid
Ola, pessoal. É possivel colocar om botão dentro de um dbgrid? Sei que existe a opção ButtonStyle, mas não atende minhas necessidades. Preciso colocar um botão mesmo.
[]´s
Stclara.
[]´s
Stclara.
Stclara_lapa
Curtidas 0
Respostas
Nasguone
27/06/2009
inclua um botao um clientdataset e data source segue o exemplo abaixo:
Espero que te ajude
Sem Mais
ECS
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBClient, StdCtrls, Grids, DBGrids;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
Button1: TButton;
DataSource1: TDataSource;
ClientDataSet1: TClientDataSet;
ClientDataSet1TESTE: TStringField;
ClientDataSet1TESTE2: TBooleanField;
procedure DBGrid1CellClick(Column: TColumn);
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(´botao no grid ok´);
end;
procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
F : integer;
Mpfc : string;
begin
F := DBGrid1.Columns.Grid.SelectedIndex;
Mpfc := DBGrid1.Columns.Items[F].FieldName;
//libera data fila de corte
if Column.Field=ClientDataSet1TESTE2 then
begin
ClientDataSet1.Edit;
ClientDataSet1TESTE2.AsBoolean:=Button1.Visible;
end;
end;
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
DBGrid1.DefaultDrawDataCell(Rect, DBGrid1.columns[datacol].field, State);
//insere datas liberação do corte
Button1.Visible := DBGrid1.SelectedField = ClientDataSet1TESTE2;
if Button1.Visible then
if gdFocused in State then
begin
// ComboBox1.Text :=dmatc.cdPecasAtc_Qtde_Linhas.AsString;
Button1.SetBounds(
Rect.Left,Rect.Top +10,
Rect.Right-Rect.Left+10,
Rect.Bottom-Rect.Top);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ClientDataSet1.CreateDataSet;
end;
end.
Espero que te ajude
Sem Mais
ECS
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBClient, StdCtrls, Grids, DBGrids;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
Button1: TButton;
DataSource1: TDataSource;
ClientDataSet1: TClientDataSet;
ClientDataSet1TESTE: TStringField;
ClientDataSet1TESTE2: TBooleanField;
procedure DBGrid1CellClick(Column: TColumn);
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(´botao no grid ok´);
end;
procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
F : integer;
Mpfc : string;
begin
F := DBGrid1.Columns.Grid.SelectedIndex;
Mpfc := DBGrid1.Columns.Items[F].FieldName;
//libera data fila de corte
if Column.Field=ClientDataSet1TESTE2 then
begin
ClientDataSet1.Edit;
ClientDataSet1TESTE2.AsBoolean:=Button1.Visible;
end;
end;
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
DBGrid1.DefaultDrawDataCell(Rect, DBGrid1.columns[datacol].field, State);
//insere datas liberação do corte
Button1.Visible := DBGrid1.SelectedField = ClientDataSet1TESTE2;
if Button1.Visible then
if gdFocused in State then
begin
// ComboBox1.Text :=dmatc.cdPecasAtc_Qtde_Linhas.AsString;
Button1.SetBounds(
Rect.Left,Rect.Top +10,
Rect.Right-Rect.Left+10,
Rect.Bottom-Rect.Top);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ClientDataSet1.CreateDataSet;
end;
end.
GOSTEI 0
Nasguone
27/06/2009
So mais uma coisa criei dos campos no clientdataset - um string e o outro tipo booleano, que e o Teste e (Teste2)
Este ultimo e o boolean e esta ligando o botão ao dbgrid......
Este ultimo e o boolean e esta ligando o botão ao dbgrid......
GOSTEI 0