Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola Boa Tarde!
Estou com problemas para colocar um dbcheck no dbgrid estou usando o firebird, o dbcheckbox não esta ficando checado.
coloquei o seguinte codigo no evento colexit do dbgrid:
procedure Tfrmsimularcorte.DBGrid1ColExit(Sender: TObject);
begin
if dbgrid1.SelectedField.FieldName=dbcheckbox1.DataField then
dbcheckbox1.Visible:=false;
end;
no evento DrawColumnCell do dbgrid:
procedure Tfrmsimularcorte.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
const IsChecked : array[Boolean] of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED);
Var drawstate:integer;
drawrect:TRect;
begin
if (gdFocused in State) then
begin
if (column.Field.FieldName=dbcheckbox1.DataField)then
begin
dbcheckbox1.Left:=Rect.Left + dbgrid1.Left+ 2;
dbcheckbox1.Top:=Rect.Top + dbgrid1.Top + 2;
dbcheckbox1.Width:= Rect.Right - Rect.Left;
dbcheckbox1.Height:=Rect.Bottom - rect.Top;
dbcheckbox1.Visible:=true;
end;
end
else
begin
if (column.Field.FieldName = dbcheckbox1.DataField)then
begin
drawrect:=Rect;
InflateRect(drawrect,-1,-1);
drawstate:=ISChecked[column.Field.AsBoolean]; // talvez
dbgrid1.Canvas.FillRect(rect);
drawframecontrol(dbgrid1.Canvas.Handle, drawrect, DFC_BUTTON, drawstate);
end;
end;
end;
no evento KeyPress do dbgrid:
procedure Tfrmsimularcorte.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if (Key = chr(9))then exit;
if (dbgrid1.SelectedField.FieldName=dbcheckbox1.DataField) then
begin
dbcheckbox1.SetFocus;
sendmessage(dbcheckbox1.Handle,WM_Char,word(Key),0);
end;
end;
e no evento click do DBCHECKBOX:
procedure Tfrmsimularcorte.DBCheckBox1Click(Sender: TObject);
begin
if dbcheckbox1.Checked then
dbcheckbox1.Caption:=dbcheckbox1.ValueChecked else
dbcheckbox1.Caption:=dbcheckbox1.ValueUnchecked;
end;
Desde ja Agradeço.
Carregando comentários...