Colocar CheckBox no DbGrid
Pessoal efetuei algumas consulta no Forum sobre este assunto e encontrei várias soluções, porém optei por uma que esta dando um erro
conforme abaixo
na posição que esta em vermelho qual o campo que devo colocar?
Insira um DBCheckBox sobre o DBGrid e defina o campo desejado.
No evento OnDrawColumnCell coloque o código:
if (gdFocused in State) and (Column.Field = [color=red:8e22832a9f][b:8e22832a9f]Campo[/b:8e22832a9f][/color:8e22832a9f]) then
begin
DBCheckbox1.SetBounds(
Rect.Left + DBGrid1.Left + 1,
Rect.Top + DBGrid1.Top + 1,
Rect.Right - Rect.Left,
Rect.Bottom - Rect.Top);
end;
No evento OnCollEnter:
if DBGrid1.Columns[DBGrid1.SelectedIndex].Field = Campo then
DBCheckbox1.Visible := True
else
DBCheckBox1.Visible :=False;
E por fim, no evento OnKeyPress:
if DBCheckBox1.Visible and (Ord(Key) > 31) then
begin
Key :=#0;
Table1.Edit;
DBCheckBox1.Checked := not DBCheckBox1.Checked;
DBCheckBox1.Field.AsBoolean := DBCheckBox1.Checked;
end;
conforme abaixo
na posição que esta em vermelho qual o campo que devo colocar?
Insira um DBCheckBox sobre o DBGrid e defina o campo desejado.
No evento OnDrawColumnCell coloque o código:
if (gdFocused in State) and (Column.Field = [color=red:8e22832a9f][b:8e22832a9f]Campo[/b:8e22832a9f][/color:8e22832a9f]) then
begin
DBCheckbox1.SetBounds(
Rect.Left + DBGrid1.Left + 1,
Rect.Top + DBGrid1.Top + 1,
Rect.Right - Rect.Left,
Rect.Bottom - Rect.Top);
end;
No evento OnCollEnter:
if DBGrid1.Columns[DBGrid1.SelectedIndex].Field = Campo then
DBCheckbox1.Visible := True
else
DBCheckBox1.Visible :=False;
E por fim, no evento OnKeyPress:
if DBCheckBox1.Visible and (Ord(Key) > 31) then
begin
Key :=#0;
Table1.Edit;
DBCheckBox1.Checked := not DBCheckBox1.Checked;
DBCheckBox1.Field.AsBoolean := DBCheckBox1.Checked;
end;
Ariovaldo
Curtidas 0
Respostas
Marco Salles
27/02/2004
Pessoal efetuei algumas consulta no Forum sobre este assunto e encontrei várias soluções, porém optei por uma que esta dando um erro
conforme abaixo
na posição que esta em vermelho qual o campo que devo colocar?
Insira um DBCheckBox sobre o DBGrid e defina o campo desejado.
No evento OnDrawColumnCell coloque o código:
if (gdFocused in State) and (Column.Field = [color=red:aae94e04c2]Campo[/color:aae94e04c2]) then
Ariovaldo: Tente Fazer:
if (gdFocused in State) and (Column.Field = Table1.FieldByName(´NomeDoCampo´)) then
[color=darkblue:aae94e04c2]Cado Os Campos Estiverem Definidos No Fieds Editor Pode Usar Também [/color:aae94e04c2]
if (gdFocused in State) and (Column.Field = Table1NomeDoCampo) then
GOSTEI 0
Ariovaldo
27/02/2004
Marcos valeu pela ajuda, apesar do seu exemplo não ser a solução, más foi baseado nele que encontrei a solução o correto é
if (gdFocused in State) and (Column.Field = dbgrid1.Fields[1]) then
Valeu mesmo galera
if (gdFocused in State) and (Column.Field = dbgrid1.Fields[1]) then
Valeu mesmo galera
GOSTEI 0
Marco Salles
27/02/2004
Marcos valeu pela ajuda, apesar do seu exemplo não ser a solução
Fico Feliz Por Voce Ter Encontrado a Solução, Mas o Que Lhe Passei, Esta Devidamente Registrado Nas Biografias Do Delphi...Agora me Resta Saber O Porque a Instruçaõ Usando a Notação Table1.FieldByName(´NomeDoCampo´) Também Não é Uma Das Soluções :?: :?: Para o Seu Caso Apresento Cinco Soluções e Gostaria De Saber Qual Delas Não Esta Dando Certo :?: :?:
1)if (gdFocused in State) and (Column.Field = Table1.FieldByName(´NomeDoCampo´)) then 2)if (gdFocused in State) and (Column.Field = Table1.Fields[1]) then 3)if (gdFocused in State) and (Column.Field = Table1[´NomeDoCampo´] then 4)if (gdFocused in State) and (Column.Field = dbgrid1.Fields[1]) then 5)if (gdFocused in State) and (Column.Field = Table1.NomeDoCampo) then
A Única Ressalve Que Eu Faria é sobre a Quinta Maneira, Porque Depende De Voce Ter Definido o Campo Usando o FieldsEditor...Além Do Que Eu Usei Um Componente Table, Mas Se Voce Tiver Usando Um Query e Só Substituir as Instruções Usando a Query...Obs:O Nome Do Campo é o Nome Que Esta Na Tabela...Então Meu Amigo, Estou Sem Entender o Porque Dessa Instrução Não Lhe Ter Servido De Imediato(Foi Erro De Compilação :?: De Execução :?: De Que :?:
GOSTEI 0