Ola Pessoal,
Após um tempo de turbulência no trabalho, mais um post.
Estava desenvolvendo mais um sistema para um cliente e me deparei com uma duvida.
- Criei uma tabela nova pro cliente, com um campo Boolean.
- Coloquei um DBGrid para ele acessar essa tabela (adicionar, remover, editar e excluir).
- E um DBNavigator
Uma tabela simples mesmo, possível de controlar com um DBNavigator. Só que fiquei pensando: Porque eu não coloco um simples CheckBox pro cliente neste campo boolean, pra evitar que ele tenha que ficar digitando FALSE/TRUE. Um clique e pronto!
Vamos ao código pra fazer isso ;-)
1) Crie seu formulário, com o DBGrid conectado a tabela.
2) Selecione o seu DBGrid e acione o evento OnDrawColumnCell.
3) Coloque o seguinte código
procedure Tfrm_tarefas.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
Check: Integer;
R: TRect;
begin
if Column.FieldName = 'concluido' then //COLOQUE O NOME DA COLUNA, NO MEU CASO 'CONCLUIDO'
begin
DBGrid1.Canvas.FillRect(Rect);
Check := 0;
if tarefasconcluido.AsBoolean = true then
Check := DFCS_CHECKED
else
Check := 0;
R:=Rect;
InflateRect(R,-2,-2); {Diminue o tamanho do CheckBox}
DrawFrameControl(DBGrid1.Canvas.Handle,R,DFC_BUTTON, DFCS_BUTTONCHECK or Check);
end;
end;
4) Selecione o seu DBGrid e acione o evento OnCellClick
5) Coloque o seguinte código:
procedure Tfrm_tarefas.DBGrid1CellClick(Column: TColumn);
begin
tarefas.Edit;
if tarefasconcluido.AsBoolean = true then
tarefasconcluido.AsBoolean := false
else
tarefasconcluido.AsBoolean := true;
tarefas.Post;
end;
É isso ai pessoal! Bem simples e fácil
Espero ter ajudado, Abraços
Olá, estou usando o mysql e ele não aceita o campo boolean, tentei usar outros campos mais não funcionou, você não saberia uma maneira de adaptar esse codigo com o banco mysql?
ResponderExcluirMeu caro, uma saída que é usada na minha empresa é criar um campo do tipo texto e gravar 'S' para verdadeiro e 'N' para falso. (Identificadores para SIM e NAO).
ResponderExcluirEspero ter ajudado. Caso queira, me mande um email.
tiago.shinoda@hotmail.com
Mas ao clicar no checkbox o campo entra em edição e mostra o valor do campo
ResponderExcluirO que vem a ser esse tarefasconcluído? Pq não tem no código a definição dele.
ResponderExcluirOlá HgabrielEnrique
ResponderExcluirÉ um campo da tabela.
Ola, o exemplo funcionou com voces ?
ResponderExcluir