GARANTIR DESCONTO

Fórum Botão dentro de um dbgrid #399326

17/04/2011

0

Como faço para inserir um botão dentro de uma coluna no dbgrid?
Frederico Brigatte***

Frederico Brigatte***

Responder

Posts

17/04/2011

Frederico Brigatte***

Como faço para inserir um botão dentro de uma coluna no dbgrid?


Achei esse código que até funciona mais ou menos:

procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
// if DBGrid1.SelectedField.FieldName  = 'Teste' then   
//  begin
   form2.show;
   form2.Edit1.text:='oi';//Variavel global mandando os dados para o form2
//  end;
end;


procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  BUTTON: Integer;
  R: TRect;
  SCapt : string;
begin
  if Column.FieldName = 'Teste' then
  begin
    DBGrid1.Canvas.FillRect(Rect);
    BUTTON := 0;
    R:=Rect;
    SCapt := 'Alterar';
    InflateRect(R,-2,-2); //Diminue o tamanho do Botão
    DrawFrameControl(DBGrid1.Canvas.Handle,R,BUTTON, BUTTON or BUTTON);
    with DBGrid1.Canvas do
    begin
      Brush.Style := bsClear;
      Font.Color := clBtnText;
      TextRect(Rect, (Rect.Left + Rect.Right - TextWidth(SCapt)) div 2, (Rect.Top + Rect.Bottom - TextHeight(SCapt)) div 2, SCapt);
    end;
  end;
end;

Gostaria que em vez de escrever alterar no botão, escrevesse horas, assim que quero:

07:00
07:30
08:00

e assim por diante.
Responder

Gostei + 0

17/04/2011

Frederico Brigatte***

Como faço para inserir um botão dentro de uma coluna no dbgrid?


Achei esse código que até funciona mais ou menos:

procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
// if DBGrid1.SelectedField.FieldName  = 'Teste' then   
//  begin
   form2.show;
   form2.Edit1.text:='oi';//Variavel global mandando os dados para o form2
//  end;
end;


procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  BUTTON: Integer;
  R: TRect;
  SCapt : string;
begin
  if Column.FieldName = 'Teste' then
  begin
    DBGrid1.Canvas.FillRect(Rect);
    BUTTON := 0;
    R:=Rect;
    SCapt := 'Alterar';
    InflateRect(R,-2,-2); //Diminue o tamanho do Botão
    DrawFrameControl(DBGrid1.Canvas.Handle,R,BUTTON, BUTTON or BUTTON);
    with DBGrid1.Canvas do
    begin
      Brush.Style := bsClear;
      Font.Color := clBtnText;
      TextRect(Rect, (Rect.Left + Rect.Right - TextWidth(SCapt)) div 2, (Rect.Top + Rect.Bottom - TextHeight(SCapt)) div 2, SCapt);
    end;
  end;
end;

Gostaria que em vez de escrever alterar no botão, escrevesse horas, assim que quero:

07:00
07:30
08:00

e assim por diante.


Parecido com a imagem abaixo quero que fique:


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar