CheckBox dentro do DBGrid
aew pessoal....
estou precisando colocar um dbcheckbox dentro do dbgrid...
onde eu possa checkar ele ou de-checkar....
alguem pode me dar um Help....
valeu...
estou precisando colocar um dbcheckbox dentro do dbgrid...
onde eu possa checkar ele ou de-checkar....
alguem pode me dar um Help....
valeu...
Felipe_b350
Curtidas 0
Respostas
Nasguone
08/07/2009
Já postei este exemplo na verdade ele serve para botão edit check .
Insira um Datasource e um clientdataset coloque dois campos um tipo string e outro tipo boolean....
espero que te ajude
Sem mais
E.C.S
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBClient, StdCtrls, Grids, DBGrids;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
DataSource1: TDataSource;
ClientDataSet1: TClientDataSet;
ClientDataSet1TESTE: TStringField;
ClientDataSet1TESTE2: TBooleanField;
CheckBox1: TCheckBox;
procedure DBGrid1CellClick(Column: TColumn);
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure FormCreate(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked = true then
ShowMessage(´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:=CheckBox1.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
CheckBox1.Visible := DBGrid1.SelectedField = ClientDataSet1TESTE2;
if CheckBox1.Visible then
if gdFocused in State then
begin
// ComboBox1.Text :=dmatc.cdPecasAtc_Qtde_Linhas.AsString;
CheckBox1.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.
Insira um Datasource e um clientdataset coloque dois campos um tipo string e outro tipo boolean....
espero que te ajude
Sem mais
E.C.S
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBClient, StdCtrls, Grids, DBGrids;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
DataSource1: TDataSource;
ClientDataSet1: TClientDataSet;
ClientDataSet1TESTE: TStringField;
ClientDataSet1TESTE2: TBooleanField;
CheckBox1: TCheckBox;
procedure DBGrid1CellClick(Column: TColumn);
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure FormCreate(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked = true then
ShowMessage(´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:=CheckBox1.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
CheckBox1.Visible := DBGrid1.SelectedField = ClientDataSet1TESTE2;
if CheckBox1.Visible then
if gdFocused in State then
begin
// ComboBox1.Text :=dmatc.cdPecasAtc_Qtde_Linhas.AsString;
CheckBox1.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
.lg.
08/07/2009
Se o tipo do campo for booleana, o dbgrid lhe mostrará um checkbox sem vc ter que fazer nada.
No banco de dados, verifique se o campo que vc quer, se é do tipo boolean. se for ta de boa, se não for... vc pode criar um field no seu DataSet do tipo boolean e no beforePost vc valida o que for que vc quer.
No banco de dados, verifique se o campo que vc quer, se é do tipo boolean. se for ta de boa, se não for... vc pode criar um field no seu DataSet do tipo boolean e no beforePost vc valida o que for que vc quer.
GOSTEI 0