Colocar CheckBox no DbGrid

Delphi

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: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

Ariovaldo

Curtidas 0

Respostas

Marco Salles

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

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


GOSTEI 0
Marco Salles

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
POSTAR