Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) checkbox no dbgri


flavioavilela

Pergunta

bom dia a todos...

como faço para colocar um checkbox dentro do dbgrid mas que não seja o dbcheckbox... já baixei vários exemplos usando dbcheckbox e funciona... só que eu queria algo melhor, onde a pessoa clica no item desejado e ela salve na tabela uma informação que não seje True ou False. com o dbcheckbox, usando a propriedade ValueChecked e UnvalueChecked, agente determina o valor para quando clicar e não clicar e lá no bd ele salva somente True ou False. se colocar qualquer outra coisa, não funciona, da pau... além de salvar as informações no bd já quando salva, e eu queria criar um botão pro cara salvar e ai sim, pegar os que estão marcados e colocar um valor no bd e os desmarcados colocar outro valor e não alterar ali na hora que vai clicando... alguém sabe me ajudar nisso???

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
só que eu queria algo melhor, onde a pessoa clica no item desejado e ela salve na tabela uma informação que não seje True ou False. com o dbcheckbox, usando a propriedade ValueChecked e UnvalueChecked, agente determina o valor para quando clicar e não clicar e lá no bd ele salva somente True ou False.
Isso não é verdade .... veja no help do delphi:

ValueChecked can represent more than one value in a semicolon-delimited list of items. If any of the items matches the contents of the field of the current record in the dataset, the check box appears checked. For example, set the value of ValueChecked string like this:

DBCheckBox1.ValueChecked := 'True;Yes;On';

de acordo com o que esta escrito voce pode usar uma lista de itens:

exemplo:

propriedade ValueChecked := 1;

propriedade UnvalueChecked := 0;

ou

propriedade ValueChecked := Sim;

propriedade UnvalueChecked := não;

ou

propriedade ValueChecked := Yes;

propriedade UnvalueChecked := No;

ou

propriedade ValueChecked := Aberto;

propriedade UnvalueChecked := Fechado;

ou

propriedade ValueChecked := True;

propriedade UnvalueChecked := False;

ou

propriedade ValueChecked := On;

propriedade UnvalueChecked := Off;

etc...

Agora se quiser um checkbox dentro do dbgrid sugiro usar o SMDBGrid da paleta de componentes SMComponentes

http://www.scalabium.com/smcmtbl.htm

http://www.4shared.com/file/107937069/d4c7...mponent355.html

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

pra mim tanto faz um ou o outro, funcionando é o que eu queria...

só que, eu configuro para aparecer o dbcheckbox no dbgrid e funciona beleza saca... ai, é só eu ir na propriedade Value... e UnValue... alterar de true e false para outro valor qualquer ai quando rodo o programa, o checkbox não da pra clicar... você clica ele fica todo branco... sacou???

o código que eu utilizo segue abaixo:

procedure TFrmConciliacao_Bancaria.DBGrid1CellClick(Column: TColumn);
begin
  if CheckBox1.Checked then
    CheckBox1.Caption:= ''
  else
    CheckBox1.Caption:= '';
end;
procedure TFrmConciliacao_Bancaria.DBGrid1ColExit(Sender: TObject);
begin
  if DBGrid1.SelectedField.FieldName = CheckBox1.DataField then
    CheckBox1.Visible:= false
end;
procedure TFrmConciliacao_Bancaria.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 = CheckBox1.DataField) then
    begin
     CheckBox1.Left := Rect.Left + DBGrid1.Left + 2;
     CheckBox1.Top := Rect.Top + DBGrid1.top + 2;
     CheckBox1.Width := Rect.Right - Rect.Left;
     CheckBox1.Height := Rect.Bottom - Rect.Top;
     CheckBox1.Visible := True;
    end
  end
  else
  begin
    if (Column.Field.FieldName = CheckBox1.DataField) then
    begin
      DrawRect:=Rect;
      InflateRect(DrawRect,-1,-1);
      DrawState := ISChecked[Column.Field.AsBoolean];
      DBGrid1.Canvas.FillRect(Rect);
      DrawFrameControl(DBGrid1.Canvas.Handle, DrawRect,
        DFC_BUTTON, DrawState);
    end;
  end;
end;
procedure TFrmConciliacao_Bancaria.DBGrid1KeyPress(Sender: TObject;
  var Key: Char);
begin
  if (key = chr(9)) then
    exit;
  if (DBGrid1.SelectedField.FieldName = CheckBox1.DataField) then
    begin
      CheckBox1.SetFocus;
      SendMessage(CheckBox1.Handle, WM_CHAR, word(key), 0);
    end;
end;

dai eu linko blzinha o datasourse no dbcheckbox com o campo que eu quero e tudo mais ai da certo saca, dai é só eu alterar a propriedade Value... UnValue... de true e/ou false para qualquer outra que o checkbox aparece, mas não permite marcar e desmarcar...

Link para o comentário
Compartilhar em outros sites

  • 0
só que, eu configuro para aparecer o dbcheckbox no dbgrid e funciona beleza saca... ai, é só eu ir na propriedade Value... e UnValue... alterar de true e false para outro valor qualquer ai quando rodo o programa, o checkbox não da pra clicar... você clica ele fica todo branco... sacou???

Não sei se voce reparou, mas se voce colocar valores numericos no dbcheckbox ( ex: 1 ou 0 ) o campo deverá ser numerico de 1 posição

se for utilizar ( ex: SIM ou não ) o campo deverá ser Caracter ou Alfanumerico de 3 posições

se for utilizar ( ex: True ou False) o campo deverá ser Logical

se o campo especificado para o dbcheckbox não for compativel com os valores colocados na propriedade ValueChecked e UnvalueChecked, o dbcheckbox não ficará habilitado.

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...