Escolar Documentos
Profissional Documentos
Cultura Documentos
Diego Garcia
Delphi, Scrum, Arquitetura de Software
e um pouco mais…
O Dbgrid talvez seja um dos componentes mais utilizados no dia a dia de um desenvolvedor delphi,
principalmente em soluções comerciais, isso graças ao fato de que o uso deste componente seja definitivamente a
maneira mais simples e mais rápida de apresentar dados de um dataSet para o usuário, seja esse dataSet o
resultado de uma pesquisa em um banco de dados, registros temporários, etc. Na grande realidade o conceito de
grid está presente em qualquer ambiente de desenvolvimento.
Neste post eu resolvi juntar algumas dicas simples e práticas para melhorar a utilização deste componente. Para
melhor demonstrar os resultados dos exemplos, criei um projeto teste com dados fictícios em um ClienteDataSet,
porem, os exemplos que fiz são quase que 100% independentes do tipo de dataSet utilizado.
Fazer linha zebrada: vamos usar a lógica mais utilizada para zebrar linhas em um grid, verificar se o
numero do registro atual do dataSet é impar ou par, veja que não estou falando do valor de algum campo do
dataSet, mas sim o numero da linha dentro do dataSet. Para recuperar essa informação, nos dataSet temos a
propriedade RecNo que consiste no numero do registro ativo no dataSet e para saber se esse numero é impar
ou par, basta usar o método Odd que retornar true se um numero é impar e false se esse for par. Para
implementar essa rotina, iremos utilizar o evento OnDrawColumnCell do DbGrid que consiste no evento em
que os dados são “desenhados” no grid.
Note que para customizar a visualização do meu grid, eu utilizei a propriedade Canvas, é nesta propriedade que
ficam as configurações de tela do grid. Dentro da propriedade canvas, eu tenho a propriedade Brush, que é
utilizada para pintar o fundo de uma linha no grid. O resultado deste exemplo ficaria desta forma
Destacar linhas: Muitas vezes precisamos dar algum destaque visual para determinados registros
dependendo de alguma condição, para isso, podemos alterar dinamicamente a formatação de fonte ou até
mesmo
Privacidade a corEsse
e cookies: desite
fundo de uma
utiliza cookies. linha do
Ao continuar DBGrid.
a usar Seguindo
este site, você osseudados
concorda com uso. que criei para os exemplos faremos com
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
que, os registros que tiverem um valor maior do que 2500 no campo salario fiquem com a linha vermelha
quando selecionados e os não selecionados fiquem com a fonte vermelha e em negrito. Fechar e aceitar
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 1/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
1 procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
2 DataCol: Integer; Column: TColumn; State: TGridDrawState);
3 begin
4 with DBGrid1 do
5 begin
6 if DataSource.DataSet.FieldByName('salario').AsFloat > 2500 then
7 begin
8 if (gdSelected in State) then
9 Canvas.Brush.Color := clRed
10 else
11 begin
12 Canvas.Font.Style := [fsBold];
13 Canvas.Font.Color := clRed;
14 end
15 end;
16 Canvas.FillRect(Rect);
17 DefaultDrawColumnCell(Rect,DataCol,Column,State);
18 end;
19 end;
Comparando com o exemplo anterior não temos muitas diferenças, a não ser pela verificação gdSelected in State,
caso esta verificação resulte em true significa que neste momento o DBGrid está desenhando a linha selecionada.
Neste o exemplo, o resultado ficaria desta forma
Destacar uma célula e uma coluna: Este exemplo, não chega a ser muito diferente do anterior, por isso,
mantive a mesma lógica, a coluna referente ao campo salario ficará com o fundo cinza, porem, caso algum
registro tenha uma valor neste campo maior do que 2500, a célula ficará com o fundo vermelho e a fonte
amarela.
Talvez a diferença mais importante entre este exemplo e o anterior é a verificação feita pela coluna, ou seja, a
manipulação do canvas é feita somente quando a coluna salario está sendo desenhada. Rodando esse exemplo em
nossa base de estudo, teríamos o seguinte resultado
Privacidade e cookies: Esse site utiliza cookies. Ao continuar a usar este site, você concorda com seu uso.
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
Inserir um checkbox em um coluna: Esse exemplo foi particularmente muito útil para mim Fechar
no meu dia a
e aceitar
dia, tanto que quando pensei em fazer esse post, foi o primeiro exemplo que separei para demonstrar. Ainda
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 2/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
no evento OnDrawColumnCell, assim como no exemplo anterior, primeiramente precisamos saber se estamos
desenhando a coluna que recebera o checkBox para, ai sim, inserir o componente no grid.
O código acima alem de inserir o checkBox no campo selecionado já define se este checkBox vai estar marcado ou
desmarcado, de acordo com o valor do campo em questão, através da variável Check, o resultado deste exemplo
ficaria desta forma
Para deixar um pouco mais prático o uso do checkBox no DBgrid, podemos fazer uma rotina para marcar ou
desmarcar o componente quando a célula que ele está seja clicada
Inserir uma imagem em uma coluna: Eu particularmente usei pouco esse recurso mas todas as vezes que
usei gostei bastante do resultado, a parte boa é que é bem simples de fazer. Como auxilio vamos utilizar um
componente TImageList para poder armazenar as imagens que iremos utilizar. Trabalhando com a ideia do
campo selecionado, vamos inserir duas imagens no TImageList e já deixar com que a imagem referente ao
valor False do campo fique com o índice zero enquanto que a referente ao valor True fique com o índice 1
Privacidade e cookies: Esse site utiliza cookies. Ao continuar a usar este site, você concorda com seu uso.
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
Fechar e aceitar
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 3/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
Agora basta desenhar as imagens no DBGrid de acordo com a coluna e o valor da coluna.
Simples não? Até mais simples do que o checkBox, apesar de nem sempre deixar o visual mais profissional.
Utilizar um ComboBox em uma coluna: A técnica de utilizar um ComboBox em um grid é feita de uma
forma um pouco diferente dos exemplos anteriores, dentro das Columns do Dbgrid existe a propriedade
PickList que consiste em um objeto do tipo TStrings e é utilizado exatamente para dar esse efeito do combo
dentro de uma célula do grid. Então para demonstrar a utilização desta propriedade, dentro do meu método de
carregar os dados, eu coloquei o seguinte trecho de código:
Obviamente este é apenas um exemplo didático, em uma situação real poderíamos carregar esta propriedade com
valores vindos de uma tabela de validação por exemplo. O código acima daria o seguinte efeito:
Privacidade e cookies: Esse site utiliza cookies. Ao continuar a usar este site, você concorda com seu uso.
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
Ordenar dinamicamente pela coluna clicada pelo usuário: Por experiencia eu digo que a ordenação
Fechar e aceitar
dos dados em um DBgrid é uma das coisas mais importantes na hora de apresentar dados para um usuário,
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 4/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
mas é normal surgir a pergunta, como saber por qual campo ordenar os dados? Simples, permita que o
usuário escolha por qual campo ele quer fazer a ordenação. Pode parecer que não, mas é algo simples, neste
exemplo faremos com que quando o usuário clique no titulo de uma coluna no DBgrid, este seja ordenado pelo
campo desta coluna. Para deixar mais intuitivo para o usuário, vamos mudar o icone do mouse quando este
estivar passando pelo titulo dos campos no DBGrid, através do método OnMouseMove
Esse método MouseCoord do DBgrid, retorna dentro um record de TGridcoord, em qual linha (Y) e em qual
coluna (X) do grid o cursor do mouse está, por exemplo se você estiver com o cursor do mouse na segunda linha e
terceira coluna, teríamos os seguintes valores no TGridcoord.Y e TGridcoord.X
1 Y = 2;
2 X = 3;
Agora vamos efetivamente fazer a ordenação dos dados. Para deixar um pouco mais visual, vamos também deixar
em negrito o titulo da coluna em que o DBgrid está ordenado. A ordenação dos dados com clientDataSet fica fácil
graças a propriedade IndexFieldNames que define por quais campos o clientDataSet será indexado. Sendo assim
no método OnTitleClick, basta colocar o seguinte código:
Seguindo este exemplo, ao clicar no titulo da coluna nome o resultado seria este
Talvez este seja o único exemplo que faça com as dicas deste post não sejam 100% compatíveis com qualquer
dataSet, pois utilizamos um método próprio de ClientDataSets, porem isso não significa que não seja possível
fazer este exemplo com outros tipos de dataSets, basta fazer uma ou outra adaptação.
Privacidade e cookies: Esse site utiliza cookies. Ao continuar a usar este site, você concorda com seu uso.
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
Fechar e aceitar
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 5/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
Anúncios
Compartilhe isso:
Carregando...
Relacionado
Criando um serviço do windows no Delphi Tipos Enumerados em Delphi Threads no Delphi, por onde começar ? –
Em "Programação" Em "Programação" Parte IV
Em "Programação"
Esse post foi publicado em Programação e marcado Delphi. Guardar link permanente.
pedssm disse:
19/02/2013 às 11:06 pm
Olá Diego! Achei muito produtivo seu post! Queria aproveitar e tirar uma dúvida, vê se consegue me ajudar:
Tenho um DBGRID com várias colunas, e algumas delas mostram somente iniciais de palavras, conforme gravado no BD, por
exemplo, ‘A’ para ‘Aberto’. Queria saber como mostrar ao invés de ‘A’ (que ele carrega do dataset) seu Alias completo
(‘Aberto’ como dito em pauta). Como faço isso?
Responder
Opa amigo como vai? antes de mais nada, muito obrigado pelo feedback, fico feliz que tenha gostado… Bom sobre
sua duvida, você pode usar o evento OnGetText do Field que você quer manipular. Pra fazer isso, selecione na
lista de campos do seu dataSet o campo que está vindo o identificador (o ‘A’ em questão), ai implemente o evento
OnGetText dele com algo desse tipo:
Privacidade e cookies: Esse site utiliza cookies. Ao continuar a usar este site, você concorda com seu uso.
1 como
Para saber mais, inclusive sobre procedure
controlar osdmNucleo.cdsTesteIdentificadorGetText(Sender:
cookies, consulte aqui: Política de cookies TField;
2 var Text: string; DisplayText: Boolean);
3 begin Fechar e aceitar
4 Text := Sender.AsString;
5 if Sender.AsString = 'A' then
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 6/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
6 Text := 'Aberto'
7 else if Sender.AsString = 'F' then
8 Text := 'Fechado';
9 end;
pedssm disse:
20/02/2013 às 10:02 pm
Sim, acho que eu entendi sim amigo, tenta fazer o seguinte, no seu DBRadioGroup coloca tanto o Itens como o
Values com o valor que será apresentado no DBGrid, no caso ‘Aberto’, ‘Fechado’. Sim eu também acho estranho,
mas fiz um teste aqui rapidamente e funcionou. Qualquer coisa é só falar, estamos ai =).
Responder
pedssm disse:
20/02/2013 às 10:47 pm
Também não funcionou, pois no banco eu gravo as letras(Char), se colocar as palavras não funciona.Queria
que aparecesse na Field do DBGrid como se fosse um Alias da letra que realmente esta no banco.
Que estranho, acho que funcionou no meu teste porque o meu dataSet estava esperando um campo com
somente um carácter, ai quando caia a palavra ‘Aberto’ por exemplo, ele só pegava a letra ‘A’. Para você
entender como testei, fiz um ClientDataSet com um campo do tipo ftString com size 1, no OnGetText deste
campo eu coloquei o código que eu lhe enviei no primeiro comentário, depois coloquei um dbGrid e um
DbRadioGroup. No dbRadioGroup coloquei o Itens e o Values como:
Aberto
Fechado
Ai sempre que eu mudava no DbRadioGroup eu dava um Edit e depois um Post no ClientDataSet. Para ter
certeza que ele gravou o que eu queria eu dava um ShowMessage no campo, ai só vinha a primeira letra
mesmo. Mas testei novamente com um size de 10 no campo e realmente ele está gravando a palavra
inteira. Para “contornar” esse problema você pode no OnSetText do campo fazer o processo contrário:
Sim é uma gambiarra, mas acho que ajuda. Eu realmente nunca gostei de usar o DbRadioGroup,
exatamente por problemas como esse. Me diga se funcionou, caso não tenha funcionado vamos atrás da
solução!
Privacidade e cookies: Esse site utiliza cookies. Ao continuar a usar este site, você concorda com seu uso.
abs.controlar os cookies, consulte aqui: Política de cookies
Para saber mais, inclusive sobre como
Fechar e aceitar
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 7/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
Pensando bem, você poderia usar um campo calculado, ai no DbGrid você apresenta o campo calculado, mas o
dbRadioGroup você aponta para o campo original. O campo calculado faria o mesmo trabalho do OnGetText, caso o
campo original tivesse com o valor ‘A’ o valor do campo calculado seria ‘Aberto’, caso fosse ‘F’, seria ‘Fechado’ etc… Acho
que essa seria uma solução ainda melhor do que o OnGetText / OnSetText.
Responder
Heleno disse:
12/09/2014 às 4:38 pm
Também estou com uma dúvida referente ao amigo e gostaria de saber qual seria o código para esse campo calculado
e em qual evento?
Responder
André disse:
20/03/2013 às 11:01 am
Olá, eu estou com uma duvida diferente, tenho um dbgrid e estou tentando implementar uma forma de redimencionar as
colunas quando levamos o cursor entre o titulo de uma coluna e outra quando o cursos se transforma em um crHSplit aí
damos um duplo cick e ela redimenciona automaticamente, mas não to conseguindo
Responder
Opa André, tudo bom? acho que não existe uma forma já pronta no componente para fazer isso, você teria que
pesquisar como redimensionar dinamicamente as colunas de um dbGrid e adaptar a solução ao seu cenário. Caso
eu descubra algo, volto aqui e posto. []’s
Responder
Diego disse:
09/09/2013 às 11:32 am
Olá Diego, bom ter pessoas como voce, na net, tenho uma necessidade e não sei como resolvê-la,
Imagine uma nota fiscal, onde preciso inserir vários itens no corpo da nota. Preciso de um DBGrid e gostaria de Inserir,
Alterar e Excluir dados no Dbgrid, voce tem alguma publicação sobre este tema?
Responder
Olá Fausto, muito obrigado pelo feedback. Sobre o seu problema, não cheguei a escrever nada sobre isso, mas se
entendi bem a sua necessidade você precisa editar dados diretamente no DBGrid certo? se for assim, acho que as
Privacidade e cookies: Esse site utiliza cookies. Ao continuar a usar este site, você concorda com seu uso.
configurações default do DBGrid mais um DataSet editável já resolvem, mas acho que seria mais elegante você
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
criar todo um processo de entrada de nota fiscal, onde os dados seriam inseridos em um dataSet temporário (um
ClientDataSet funciona perfeitamente para esse fim também) e neste cenário você teria um DBGridFechar
ligadoe aaceitar
esse
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 8/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
dataSet temporário apresentando os dados para o usuário. Depois bastaria efetivar esse dados no banco de dados.
Seria mais ou menos isso amigo?
Responder
Bom dia, Diego, é isso mesmo que preciso. Ja tenho o ClientDataSet no Data Module, só que não sei como
inserir os dados dentro do Dbgrid, para depois concretizar a gravação dos dados na nota fiscal.
Então Fausto, não sei se peguei em que ponto vc parou mas vamos la, para vc ligar qualquer DataSet a um
DBGrid, você deve usar um DataSource. O DataSource te a propriedade DataSet aonde vc teria que
apontar para o ClientDataSet e o DBGrid tem a propriedade DataSource que vc deve apontar para esse
novo DataSource. Por padrão o DBGrid já vem configurado para permitir edição diretamente nele, basta
você depois dar um .Edit .Post no seu ClientDataSet que os dados das alterações feitas no DBGrid já
estarão no ClientDataSet
algo mais ou menos assim:
Uma outra dica é você usar o componente DBNavigator ligado ao dataSource, com ele você consegue
editar, inserir, excluir e navegar nos registros do DBGrid e ele é bem visual.
Com os dados efetivados no ClientDataSet basta você gravar no banco de dados, mas isso depende
diretamente da forma como voCê está se comunicando com o banco de dados. Se o clientDataSet estiver
ligado a um DataSetProvider e este ligado a um SqlTable, basta usar o ApplyUpdates do ClientDataSet, ou
você pode usar querys, ou componetes Table, essa etapa é realmente muito relativa. Qualquer duvida pode
entrar em contato…
[]’s
emanuel1 disse:
08/04/2013 às 9:29 am
Bom dia Diego. Como faço pra mandar um campo de um grid para outro grid. Porque quero que ao selecionar uma linha do
grid (PEDIDO), mande para outro grid os produtos daquela PEDIDO.
Responder
Opa Emanuel, acho que seu caso é fazer esquema de mestre x detalhe, provavelmente isso lhe ajuda.
Responder
Paula disse:
24/04/2013 às 8:27 pm
Oi Diego,
Privacidade e cookies:
Estou comEsse
umsite utiliza cookies.
problema em Ao continuar
uma grid. aTenho
usar esteuma
site, você concorda
coluna data,com
noseubanco
uso. está salvo a data e a hora (dd/mm/yyyy hh:mm:ss).
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
Mas na grid exibe apenas a hora e fora de ordem. Você sabe se alguma propriedade da grid pode estar fazendo isto?
Obrigada. Fechar e aceitar
Responder
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 9/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
Olá Paula.. Acredito que se for no grid o problema, será na coluna que você está utilizando para mostrar a data,
porem, acredito que o problema se no field do seu dataSet.
Responder
Leoncio disse:
25/04/2013 às 4:33 pm
Leoncio disse:
25/04/2013 às 4:35 pm
Esqueci de comentar, estou trabalhando com a tecnologia ADOConection, ADOQuery e Data Source
Responder
Opa Leoncio tudo bom? simples, em seu botão executar faça algo desse tipo:
1 ADOQuery.SQL.Text := Memo1.Lines.Text;
2 ADOQuery.Open;
Acredito que o ADOQuery já esteja apontado para o DataSource, ai basta apontar esse DataSource em um DBGrid
que os dados irão aparecer neste. =)
Responder
Andre disse:
29/04/2013 às 3:07 pm
Era isso que eu estava procurando, um tuto que falasse de forma clara e completa sobre dbgrid
sou iniciante em delphi e achei muito boa sua publicação, parabéns pela iniciativa
Responder
Opa Andre, muito obrigado, fico realmente muito feliz que o post esteja sendo útil. Grande abraço… se precisar de
algo é só falar.
Responder
lucashegomes disse:
Privacidade e cookies:àsEsse
29/04/2013 3:41site
pmutiliza cookies. Ao continuar a usar este site, você concorda com seu uso.
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
Caraca, seu post foi excelente, consegui entender os detalhes perfeitamente, uma pena que ainda sou um pouco leigo pra
Fechar e aceitar
compreender tudo a fundo. Estou pegando grid agora, e, querendo aprender a fazer conexão entre os CRUD e o bd. Só uma
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 10/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
dúvida, qual é a diferença entre o GRID comum e o DBGRID? Eu não posso utilizar somente o GRID para fazer a transação
com o bd?
Responder
Muito obrigado Lucas, fico feliz que tenha ficado fácil de entender. Sobre a sua pergunta, basicamente com o
DBGrid você consegue conectar ao um DataSource que por sua vez consegue se conectar com um DataSet que
pode ser uma tabela, um ClientDataSet com dados temporários, etc… Para fazer as transações com o banco de
dados você não precisa de nenhum GRID, mas para apresentar em tela as informações para o usuário no formato
de um grid o melhor componente é o DBGrid mesmo na minha opinião.
Responder
Boa tarde Diego, reforço os elogios da galera, seu post está sendo bem proveitoso. Mas tenho a seguinte necessidade: quando
o usuário clica na coluna para orderar o grid por ela, perdemos a seleção atual, sempre indo para a primeira célula do grid,
como faço para que mesmo depois de uma nova ordenação a seleção continue no registro anterior, obedecendo linha e coluna
de antes?
Responder
Opa Rosevaldo, muito obrigado pelo feedback, é muito bom saber que o post está sendo útil. Sobre a sua
necessidade, você pode usar um Bookmark:
1 var
2 _registro : TBookmark;
3 begin
4 _registro := DBGrid1.DataSource.DataSet.GetBookmark; //Pega o local do registro atu
5 try
6 //...
7 finally
8 DBGrid1.DataSource.DataSet.GotoBookmark(_registro); //Movimenta o ponteiro do Dat
9 DBGrid1.DataSource.DataSet.FreeBookmark(_registro); //Libera o bookmark da memóri
10 end;
Como você falou que precisa disso na rotina que ordena o Grid, você pode fazer desta forma:
Espero que tenha ajudado, eu não cheguei a testar o código, mas acho que funciona tranquilo, de qualquer forma,
comente
Privacidade e cookies: Esse aqui
site utiliza se deu
cookies. certo oua usar
Ao continuar não,este
qualquer coisa agente
site, você concorda com seufaz
=) uso.funcionar
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 11/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
fernando disse:
17/05/2013 às 1:41 am
[]’s
Responder
paulo disse:
17/05/2013 às 8:54 pm
boa noite sobre o checkbox na grid, fiz tudo certinho, mas quando seleciono uma linha na grid aparecer atrás do checkbox a
palavra true ou false.
Responder
Com isso você está limpando o texto que será exibido no grid, como você vai usar um checkBox no lugar do valor
original mesmo, isso não trara problemas.
[]’s
Responder
paulo disse:
17/05/2013 às 9:08 pm
20/05/2013 às 9:57 am
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 12/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
Assim, estou com problemas no combo dentro dbgrid, eu colocando os valores no PickList, só que esse combo nativo permite
que o usuário digite algo que não esteja na lista, sabe de alguma maneira que eu possa modificar esse combo ou bloquear a
digitação????
Obrigado
Responder
Opa Odirlei, então, sinceramente não sei, até tentei fazer um teste aqui mas foi sem sucesso, o que você pode fazer
é usar o evento OnBeforePost do seu DataSet para validar se o valor do campo é valido.
[]’s
Responder
Bom dia, Diego! Gostei muito do seu exemplo de como exibir checkboxes dentro do DBGrid, mas pelo que pude perceber só
funciona com campos que já são nativamente Boolean.
Como eu poderia fazer isso em um DBGrid apontado para um DataSet do MySQL, por exemplo, onde campos Boolean não
são suportados (eu uso um campo TINYINT com valores 0 ou 1)?
Aproveito para lhe parabenizar pelo excelente post e te agradeço desde já!
Responder
Opa Jonathan, bom dia. Muito obrigado pelos elogios. Sobre a sua pergunta, é muito fácil a adaptação, basta
alterar a linha Check := IS_CHECK[Column.Field.AsBoolean]; para algo como Check :=
IS_CHECK[Column.Field.AsInteger = 1];. Seguindo o exemplo do post:
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 13/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
é claro, levando em consideração que o seu campo representa 1 para True e 0 para False. Espero que tenha
ajudado.
[]’s
Responder
Obrigado mais uma vez, Diego! O mundo precisa de mais pessoas como você, rsrs
Abraço!
Fernando disse:
17/03/2014 às 3:31 pm
Eu tive a mesma dificuldade do Jonathan, porem eu copiei e colei esse codigo acima só troquei o selecionado
pelo nome do campo que eu quero que é ‘PASSO’ , mas não mudou em nada minha Grid
Obrigado.
Abraço!
Responder
Opa Romullo, tudo bom? amigo você já ligou a sua tabela em um DataSet? o primeiro passo seria você conectar
com o banco de dados, e isso vai depender muito do banco que você está usando e qual tecnologia você vai usar
para acessar esse banco de dados. Vamos imaginar que você está usando ADO, então primeiro você precisa fazer a
conexão com o banco através de um componente ADOConnection, depois você deverá atribuir a tabela a um
componente ADOTable ou ADOQuery, também depende da sua necessidade, depois você deve ligar o seu DataSet
(ADOTable ou ADOQuery) a um DataSource, através da propriedade DataSet deste ultimo e por ultimo ligar esse
DataSource ao seu DBGrid.
Ai para abrir a tabela assim que o form for apresentado, basta você programar no evento OnShow do form por
exemplo, algo como:
1 Self.DBGrid1.DataSource.DataSet.Open;
Fica complicado lhe explicar sem saber ao certo até aonde você foi, espero que tenha ajudado, caso contrário,
comente aqui ou me mande um e-mail que eu lhe ajudo.
[]’s
Responder
Romullo
Privacidade Machado
e cookies: Esse site utiliza disse:
cookies. Ao continuar a usar este site, você concorda com seu uso.
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
23/05/2013 às 1:34 pm
Fechar e aceitar
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 14/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
Lembrando que minha conexão é com FireBird feita através de um Data Module com o componente TIBTable.
Espero ter ajudado.
Abraços. 8)
Responder
[]’s
Responder
Felipe disse:
03/06/2013 às 10:43 pm
Boa Noite, eu tenho um outro problema, fiz um filtro no dbgrid, apos esse filtro ele fica salvo no dbgrid, para voltar todos os
dados tenho que fechar e abrir o aplicativo, como faço esse procediemtno com um botão?
Responder
Diego
Privacidade e cookies: Esse Garcia
site utiliza disse:
cookies. Ao continuar a usar este site, você concorda com seu uso.
Para saber mais, inclusive sobre como
04/06/2013 controlar
às 10:33 am os cookies, consulte aqui: Política de cookies
Fechar e aceitar
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 15/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
Opa Felipe, tudo bom? você filtrou o DataSet? usou a propriedade Filter? se sim, quando não quiser mais o filtro,
basta setar a propriedade Filtered do DataSet para false, exemplo:
1 Dbgrid1.DataSource.DataSet.Filtered := false;
Responder
Felipe disse:
04/06/2013 às 10:49 am
Segue abaixo o codigo que estou utilizando, duas coisas que queria mudar nele, colocar o comando like para
que filtre qualquer parte do texto, e logo apos a filtragem quero criar um botão, para limpar o DBGrid e
reemostar tudo na tabela.
begin
if key = #13 then
begin
if InputQuery(‘Pesquisar por: ‘ + TDBGrid(Sender).Columns[TDBGrid(Sender).SelectedIndex].FieldName,
‘Digite o conteúdo a Pesquisar’, Pesquisa) then
begin
TDBGrid(Sender).DataSource.DataSet.Filter := ‘”‘ +
TDBGrid(Sender).Columns[TDBGrid(Sender).SelectedIndex].FieldName + ‘”‘ + ‘ = ‘ + QuotedStr(Pesquisa);
TDBGrid(Sender).DataSource.DataSet.Filtered := True;
end
else
TDBGrid(Sender).DataSource.DataSet.Filtered := False;
end;
end;
Então Felipe, sobre o like, você não vai conseguir usar com Filtro, terá que rodar uma Query ou usar Índice, essa escolha
vai depender principalmente do banco que você usa. Se você optar por usar índice no field, então você poderá usar o
método FindNearest, ele é como se fosse um link, mas não busca em qualquer parte do texto, ele funciona como se fosse
um like desta forma ‘Texto%’.
Sobre limpar o Dbgrid eu não entendi muito bem oque você quer fazer. Se for só tirar o filtro basta você fazer como fez no
código que você postou aqui, se você quer atualizar o conteúdo do DataSet, você usar o método Refreash ou fechar e abrir
o DataSet.
Responder
Felipe disse:
04/06/2013 às 11:13 am
Ok, a primeira questão eu uso firebird e para conexão, IBDatabase1, IBTransaction1,IBTable1, DataSource1, o que vc
me recomendaria?
A segunda questão eu tentei fazer isso de abrir e fechar e não deu certo.
Privacidade e cookies: Esse site utiliza cookies. Ao continuar a usar este site, você concorda com seu uso.
procedure
Para saber mais, inclusive TFRCliente.Button1Click(Sender:
sobre como TObject);
controlar os cookies, consulte aqui: Política de cookies
begin
DataSource1.DataSet.Close; Fechar e aceitar
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 16/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
DataSource1.DataSet.Open;
end;
Responder
Para fazer o Like, então eu lhe recomendo usar uma Query, ai vc consegue fazer da forma que você quer
(com a porcentagem nas duas pontas).
E sobre abrir e fechar, oq deu errado? não seria o caso você também tirar o filtro do DataSet se ele estiver
filtrado?
Felipe disse:
04/06/2013 às 11:25 am
Opa Felipe, muito obrigado, fico muito feliz que você tenha gostado. Qualquer coisa é só falar, se eu souber terei muito
prazer em ajudar..
[]’s
Responder
Fhelipe disse:
10/06/2013 às 8:15 am
O posto ficou muito bacana e útil, parabéns. Gostaria de tirar uma dúvida, em relação ao grid, queria inserir uma informação
nele e ao clicar no botão salvar, ele salva-se essas informações no banco de dados, sou leigo no assunto, você poderia me
ajudar?
Responder
Opa Fhelipe, blz? o obrigado pelo elogio e o feedback. Sobre a sua duvida, na grande verdade, você não inseri
linhas em um DBGrid, vamos dizer que o DBGrid nada mais é do que a representação visual de um DataSet, ou
seja, os dados que estão aparecendo no DBGrid, na verdade estão armazenados em um DataSet, sendo assim, você
deve concentrar as suas alterações em um DataSet.
Privacidade e cookies: Esse site utiliza cookies. Ao continuar a usar este site, você concorda com seu uso.
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
[]’s
Fechar e aceitar
Responder
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 17/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
Fhelipe disse:
10/06/2013 às 10:02 am
Opa, beleza cara, Obrigado por responder.. Como sou leigo no assunto, você poderia me ajudar nessa
situação? como eu poderia fazer isso?
Fhelipe disse:
10/06/2013 às 10:12 am
No caso, especificando melhor o que eu quero fazer.. Atribuir valores em um DBGrid, digamos, Código,
Descrição, atribuir essas informações no grid, e no evento do botão salvar essas informações sejam salvas no
banco de dados..
Fhelipe, desculpe pela demora… tem essa apostila que fiz a muito tempo atrás para servir de apoio em um curso de
Delphi/Lógica de Programação que ministrei:
https://drgarcia1986.wordpress.com/2011/10/12/apostila-delphi-e-logica-de-programacao-para-iniciantes/
A parte de banco de dados está bem fraquinha, mas sugiro você dar uma lida e tentar fazer os exercícios, acho que pode
lhe ajudar um pouco… Qualquer duvida pode entrar em contato.
[]’s
Responder
Fhelipe disse:
13/06/2013 às 5:32 pm
Obrigado Diego, mas já consegui resolver meu problema, haha, agradeço mesmo assim, abraço.
Responder
Abraços
Responder
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 18/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
[]’s
Responder
Fhelipe disse:
14/06/2013 às 9:31 am
Gostaria de fazer outra pergunta, estou com um problema em uma DBGrid que está ligada a um data source que por sua vez
está ligado à um ClientDataSet, queria saber se você saberia como limitar a quantidade de caracteres de uma célula de uma
DBGrid, por exemplo no campo Código da DBGrid só 2 caracteres, no campo Quantidade somente 6, e por assim vai..
Responder
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/#comment-78
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/#comment-152
[]’s
Responder
Gabriel disse:
02/07/2013 às 7:04 pm
Queria Saber o codigo de fazer procura por letra em DBGRID via textbox, por exemplo eu Coloco a Letra ‘A’ aparece somente
pessoas com a letra A no DBGRID… OBG
Responder
Gabriel, existem diversas formas de se fazer isso, mas em todas que conheço, a busca não é feita no DBGrid, mas
sim no DataSet em quem o DBGrid está ligado através de seu DataSource.
[]’s
Responder
Eduardo disse:
08/07/2013 às 11:14 am
Ola.. Achei muito boa suas dicas, vou utiliza-las, porem estou com um problema e gostaria da sua ajuda…
Possuo uma query que é usada para formar o DbGrid.. “SELECT ID_USUARIO FROM DYNAMICS_USUARIO ORDER BY
ID_USUARIO” …
Porém, vou adicionando usuarios conforme seja clicado em um botão no form para adicionar usuarios..
Quando adiciono um novo usuario, a query é fechada e aberta denovo… Ordenando os usuarios por Id_usuario.. Neste
Privacidade e cookies: Esse site utiliza cookies. Ao continuar a usar este site, você concorda com seu uso.
momento
Para saber insiro
mais, inclusive sobreem uma
como variavel
controlar ‘USUARIO’
os cookies, o nome
consulte aqui: deste
Política usuario.
de cookies
Oque eu preciso… Pegar este ultimo usuario inserido e seleciona-lo no Grid. Fechar e aceitar
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 19/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
Estou com dificuldades em testar os campos do grid com a variavel USUARIO.. para poder seleciona-lo no grid
Eduardo disse:
08/07/2013 às 11:16 am
Tentei usar o RECNO do datasource… porem, ele pega sempre o ultimo adicionado, e após a ordenação dos nomes,
esse indice fica errado.
Responder
Uma duvida, na sua Query você só está trazendo o ID do usuário? digo isso porque se você trouxer
também o Nome do usuário (que é o valor que você grava na sua variavel usuário pelo que entendi) você
poderia fazer um LOCATE no seu componente ADOQuery, pelo campo de nome do usuário.
Espero ter ajudado, caso ainda não tenha conseguido resolver, é só postar aqui que eu lhe ajudo com
muito prazer.
[]’s
Jessé disse:
19/07/2013 às 11:02 am
Bom Dia!
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 20/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
Será que é muito complicado de fazer ??! Espero não estar atrapalhando, mais é que não consegui respostas claras e
objetivas, que funcionassem, em minhas pesquisas pelo Google.
Abraços!!!
Responder
Acredito que não seja possível na mesma célula alterar a forma como determinadas palavras são printadas na tela,
lhe recomendo colocar cada palavra em um célula especifica para facilitar o seu tratamento visual.
[]’s
Responder
Jessé disse:
19/07/2013 às 1:13 pm
Blz cara!
Abraços!!
Olha, dessa forma que você está querendo, eu não consigo ter uma boa ideia. Mas você pode fazer essa
informação ficar em um DBText, na verdade, dois DBText, um da cor preta e outro da cor vermelha por
exemplo, ai o DBText fica embaixo do DBGrid ou encima, depende muito da forma como está sua
interface.
[]’s
Jessé disse:
19/07/2013 às 2:46 pm
Privacidade e cookies: Esse site utiliza cookies. Ao continuar a usar este site, você concorda com seu uso.
Gustavo de Melo disse:
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
23/07/2013 às 8:58 am
Fechar e aceitar
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 21/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
[]’s
Responder
Robert disse:
22/08/2013 às 1:46 am
Olá,
No DBGrid zebrado ao aplicar o filtro a “zebra fica com as listras “misturadas”.
Já tentei varias formas, você tem ideia de como resolver isto.
Abs.
Responder
Cara, filtrar DataSet com DBGrid zebrado é meio complicado mesmo. A unica solução que meio veio na cabeça
inicialmente é criar uma variável booleana no escopo do formulário onde você passaria a checar o valor dela e não
mais o RecNo, exemplo:
[]’s
Responder
Robert disse:
04/09/2013 às 1:34 am
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 22/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
04/09/2013 às 3:06 am
[]’s
hemelen disse:
31/08/2013 às 6:49 pm
Existe uma possível codificação para que fique selecionado sempre o último dado inserido na grid ? Obg
Responder
Hemelen,
Se o ultimo inserido sempre estiver no final do DataSet, basta vc colocar DataSet.Last no evento OnDataChange
do seu TDataSource.
abs
Privacidade e cookies: Esse site utiliza cookies. Ao continuar a usar este site, você concorda com seu uso.
Responder
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
Fechar e aceitar
Hemelen disse:
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 23/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
06/09/2013 às 8:19 pm
[]’s
Olá Diego
Primeiramente é sempre bom saber que existem pessoas com intuito de ajudar, esse fórum é 10.
Vi em um soft na empresa que trabalho, um DBGrid, com varias colunas, tipo, Razão Social, Nome Fantasia entre outros. Até
ai tudo bem, mas para efetuar uma consulta, basta clicar em cima de uma célula da coluna, não precisa ser no titulo, e
escrever o nome fantasia, ou mesmo parte dele, em um Edit, que a pesquisa é feita em cima daquela coluna selecionada.
Como fazer isso ?
Responder
Sobre a sua pergunta, uma maneira bem simples de fazer isso é utilizar o evento OnCellClick do DBGrid desta
forma:
Obviamente não está 100%, ai é questão de ir adaptando a sua necessidade e ir tratando algumas possíveis falhas.
Espero que tenha ajudado.
[]’s
Responder
Olá Diego, cá estou de volta, sobre minha duvida anterior, ela ainda persiste, bem, minha procedure ficou assim:
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 24/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
end;
Att
Fausto Alencar
Responder
A sua procedure esta dando erro de compilação por causa de um “begin” e um “inherited” que estão sobrando. =)
[]’s
Responder
omor disse:
06/09/2013 às 3:19 pm
como pegar o nome das columns dinamicamente? Sem prefixo? Exemplo na tabela está assim Cont_Nome, Cont_Endereco
,como pegar somente Nome e Endereco e listá-lo no dbgrid?
Responder
Acho que não entendi a sua pergunta. Você quer que o titulo das colunas apareça sem prefixo no grid? você quer
recuperar o nome dos campos e colocar em uma variável?
Me mande um pouco mais de detalhes =)
[]’s
Responder
hemelen disse:
14/09/2013 às 10:38 pm
Euegostaria
Privacidade desite
cookies: Esse saber , se
utiliza é possível
cookies. implementar
Ao continuar emvocê
a usar este site, umconcorda
Dbgrid a seguinte
com seu uso. situação : gostaria que a cada item adicionado a
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
grid uma coluna indicasse a linha correspondente, por exemplo:
Fechar e aceitar
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 25/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
pois, acontece que ,utilizando o generator do próprio Ibdataset, ele não reinicia com valor 001(ou 1). O que ocorre é que a
cada nova inserção, ele segue a sequencia anterior do último cadastro. Obg
Responder
Você pode usar o controle de generator na mão e não por trigger, mas, o correto é, utilizou um id uma vez, esse id
pertence aquele registro para sempre, mesmo se, esse registro for excluído.
Mas se você só precisa do numero do registro dentro do DataSet, você pode utilizar o DataSet.RecNo, mas isso não
é um id, é apesar o numero do registro dentro do DataSet.
[]’s
Responder
hemelen disse:
20/09/2013 às 9:49 pm
Outra dúvida, como eu faço para um campo no DBgrid receber uma variável e por exemplo, eu gostaria que
na primeira linha da grid, esse valor fosse 01, na segunda linha 02 e assim por diante … OBG ^^
Então, o DBGrid trabalha vinculado com um Dataset, então, se você quer atribuir uma variável aos
campos do Dataset, você pode trabalhar com campos calculados e usar o evento OnCalcFields para
preencher o valor deste campo…
[]’s
Bruno disse:
17/09/2013 às 7:03 pm
Olá Diego, atraz tal como o amigo Gabriel, precisava criar uma area no meu cadastro de clientes feito em Delphi XE3 para
pesquisar por nome na minha DBgrid ligada ao access 2010 e nao vejo jeito sera que pode dar uma mao?? Obrigado e
parabens pelo blog.
Responder
1 ADOQuery1.Locate('Campo','Valor',[loPartialKey]);
[]’ssite utiliza cookies. Ao continuar a usar este site, você concorda com seu uso.
Privacidade e cookies: Esse
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
Responder
Fechar e aceitar
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 26/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
Bruno disse:
18/09/2013 às 12:40 pm
Obrigado pela atenção Diego, bem eu tenho as coisas feitas desse modo, estou ligando ao access via
ADOconnection do DBGrid no Delphi XE3 e preciso fazer um campo para consulta por nome só isso, mas
como sou iniciante nao tou chegando la, deixo aqui meu mail para se for preciso trocarmos alguma
informação ou talvez enviar-lhe para se fizer o favor de dar uma olhada no que esta feito.
meb_antunes@hotmail.com
Muito obrigado.
Rafael disse:
19/09/2013 às 3:24 pm
Sobre a sua duvida, acredito que não seja possível fazer isso.
[]’s
Responder
Beleza Diego.
Entendi, estou tentando e fazendo alguns testes, mas nada feito.
Caso encontro alguma solução, vou postar aqui!
Até mais!
tenho um DbGrid(trabalho com componente TwwDBGrid) que lista alguns registros, a 1ª coluna é um campo calculavél do
tipo
Privacidade booleano,
e cookies: nas
Esse site fields
utiliza do dbgrid
cookies. alterei
Ao continuar o este
a usar editcontrol do campo
site, você concorda para
com seu uso.virar um checkbox, ok, funciona de boa, mas só
consigo
Para saber selecionar
mais, inclusive apenas
sobre como umosdos
controlar registros,
cookies, consultequando voudeselecionar
aqui: Política cookies outro ele desmarca o anterior e marca o atual que cliquei.
Fechar e aceitar
no grid em options, já alterei a propriedade dgMultiSelect = True, dgEditing = True, mas não funciona, alguma dica?
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 27/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
Responder
Será que isso não é uma limitação do componente que você está utilizando?
Eu realmente não conheço esse componente.
[]’s
Responder
JNeto disse:
25/09/2013 às 10:39 pm
Diego, em primeiro lugar, obrigado por compartilhar seu conhecimento. Em segundo, quero uma forcinha tua…
heheheheheh. É o seguinte… desenvolvi um aplicativo para ler um banco de dados (usei o Firebird) lá na empresa. O
programa funciona direitinho, mas eu gostaria de poder ao dar um duplo clique no DBGrid abrisse um novo form para que
eu pudesse visualizar melhores as informações (digamos que no meu DBGrid aparecem apenas as informações cruciais),
além de editar, excluir e criar um novo registro. Sei que é possível, mas não consigo. Pode me ajudar?
Responder
O conceito é mais ou menos esse, ai precisa entender como está implementada a sua solução.
[]’s
Responder
Bruno disse:
26/09/2013 às 2:01 pm
Olá Diego, tenho estado vendo seus posts e em primeiro lugar felicitar você por isso, grande ajudo voce esta dando a todos.
Aproveito para colocar uma questão que em tempos aqui deixei mas nao consegui resolver. Tenho uma pequena base de
dados de clientes ligada a uma tabela de access 2010 feita em Delphi XE3 ta ok com a inserçao de novos nomes etc, eu
preciso é de colocar um botao ou até uma barra de texto para que ao introduzir o nome pretendido ele va procurar na DBGrid
pois já vao sendo muitos nomes e andar com o Scroll ate achar é duro.
Será que pode me dar uma ajudinha??
Abraço.
Responder
Privacidade e cookies: Esse site utiliza cookies. Ao continuar a usar este site, você concorda com seu uso.
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
Diego Garcia disse:
Fechar e aceitar
26/09/2013 às 2:56 pm
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 28/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
Muito obrigado pelo feedback, isso é extremamente importante para nos motivar a continuar =)
Sobre a sua duvida, procure pelo método Locate do seu DataSet que está vinculado ao DBGrid.
[]’s
Responder
Bruno disse:
26/09/2013 às 5:44 pm
Mais uma vez obrigado Diego, bom vou dar uma olhada logo digo.
Bruno disse:
26/09/2013 às 6:17 pm
Oi Diego, ja estive dando uma olhada mas de facto o meu conhecimento é muito fraco. No meu cadastro de clientes, eu tenho
uma ADOConnection, uma ADOTable, um DataSource uma DBGrid e uma Navigation Bar nada mais, como deveria fazer
esse comando que preciso? A coluna onde interessa procurar é a do NOME na DBGrid.Qhe comando devo utilizar e onde o
deveria colocar? Desculpa a falta de conhecimento mas ja fiz a algum tempo este cadastro e estou agora começando a
dedicarme um pouco mais.
Vamos lá Brunão.
Imagine que no seu form que possui o DBGrid você tem os seguintes componentes:
edtPesquisa : Um TEdit responsável por armazenar o texto que o usuário deseja pesquisa.
btnPesquisar : Um TButton que realiza a pesquisa para o usuário.
Agora, no evento OnClick do botão btnPesquisar, você pode colocar o seguinte código:
1 ADOTable1.Locate('NOME',edtPesquisa.text,[loPartialKey,loCaseInsensitive]);
(Lembrando que ADOTable1 deve ser substituído pelo nome do seu TADOTable).
Esse código fará com que seja pesquisado no campo NOME o valor que esteja digitado no edit edtPesquisa, sendo
que será uma pesquisa parcial (semelhante ao LIKE do SQL) e não irá distinguir maiúsculo de minusculo.
Espero que tenha ajudado, qualquer duvida é só entrar em contato.
[]’s
Responder
Bruno disse:
26/09/2013 às 7:56 pm
Você é amigao mesmo, vou ja fazer o teste ja comento algo com voce.
Privacidade e cookies: Esse site utiliza cookies. Ao continuar a usar este site, você concorda com seu uso.
Brigado.
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
Fechar e aceitar
Bruno disse:
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 29/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
28/09/2013 às 11:46 pm
Oi diego como vai?? espero que bem. Em relação à sua ajuda, está funcionando direirinho o assunto está
resolvido amigo, venho colocar uma pequena questão em relação à Navigation Bar, ela tem um botão penso
ser para refresh ou coisa do genero, será possivel dizer a ele para fazer um refresh à DBGrid??? eu estou
correndo o cadastro de clientes em rede ou seja o Access com a tabela está num computador e outros tres
acedem à mesma e se sao inseridos dados ao mesmo tempo uns nao vem as alteraçoes até que fechem a
aplicação e voltem a entrar, a ideia é sem sairem da aplicação fazerem refresh para actualizar a DBGrid.
Mais uma vez muito obrigado pela sua ajuda você é o maximo valeu?!
Abraço.
Brunão, eu não sou grande fan de usar o DBnavigator, eu lhe recomendo colocar na sua aplicação um
botão com esse intuito. Ai você da um refreash no DataSet no evento OnClick desse botão, caso não
resolva, tente fechar e abrir o DataSet.
[]’s
Bruno disse:
30/10/2013 às 4:37 pm
Oi Diego tudo bom?? olhe eu lhe enviei um e-mail para sua conta do gmail pedindo uma pequena ajuda sera
que ja viu?? nao o ocupo muito mas é que estou laborando fora da minha cidade e esta dificil finalizar isto,
agradecia se pudesse dar uma olhada no mail por favor.
Grande abraço.
Bom dia Diego, vê se pode me ajudar. Quero colocar uma imagem no fundo do dbgrid, como se fosse uma marca d’água. Já
procurei em diversos post’s pela net mas ainda não encontrei nada satisfatório. você tem alguma sugestão? ps. Seu post
sempre em evidência!! Parabêns!
Responder
Infelizmente nunca vi isso funcionando em um DBGrid, mas você pode tentar usar um TStringGrid.
Não cheguei a implementar, mas nesse post tem um exemplo de como fazer :
http://delphi.about.com/od/vclusing/a/owner-drawing-delphi-string-grid.htm
Dependendo da versão do Delphi que você esteja usando, você pode usar o TStringGrid com o LiveBindings, ai ele
irá funcionar muito semelhante a um DBGrid.
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 30/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
Hemelen disse:
08/10/2013 às 8:20 pm
Olá, estou fazendo uma aplicaçao em delphi , e gostaria que ao clicar em uma coluna do dbgrid, abrisse outro dbgrid. Até ai
consegui fazer, o problema é que realizei o seguinte procedimento :
procedure Tfrmtotalvendames.DataSource2DataChange(Sender: TObject;
Field: TField);
begin
frmitem.dtsitem.Close;
frmitem.dtsitem.ParamByName(‘cod’).AsInteger := Qryvenda.FieldByName(‘venda_pk’).AsInteger;
frmitem.dtsitem.Open;
e o meu segundo dbgrid nunca abre, mesmo com duplo clique. O que poderia ser feito para abrir com um duplo clique do
usuario? OBG
Responder
Rosandro. disse:
09/10/2013 às 1:39 am
[]’s
Responder
mih disse:
11/10/2013 às 6:49 pm
Olá Diego, muito bom seu site. Tenho uma dúvida ( sou iniciante) fiz uma um banco no acess 2007 , e um dos campos é data
até ai tudo bem , mas o problema é que eu não consigo fazer uma pesquisa pelo mês, e mostrar no DBGrid. vc teria alguma
sugestão para me ajudar?
além disso teria como colocar os dados das pesquisa em ordem crescente?
deste já agredecida!!
Responder
Sobre o seu desafio, se você quer fazer uma pesquisa você pode usar o método Locate no seu ADOTable (levando
em consideração que você está usando ADO e um ADOTable para carregar a tabela, se for um ADOQuery o
principio é o mesmo). Caso você queira fazer uma filtro, você pode usar a propriedade Filter em conjunto com a
propriedade Filtered.
Para
Privacidade e cookies: Esse siteos dados
utiliza aparecerem
cookies. ordenados,
Ao continuar você
a usar este site, você pode criar
concorda comum índice
seu uso. no seu ADOTable.
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
Caso ainda esteja um pouco complicado, pode entrar em contato que eu lhe ajudo.
Fechar e aceitar
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 31/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
[]’s
Responder
Bruno disse:
18/10/2013 às 8:35 am
Oi Diego tudo bom, em primeiro lugar agradecer a voce a ajuda que me deu em relaçao à DBGrid, em
segundo felicitar mais uma vez o blog pois ja vi que esta sempre ajudando toda gente. Em terceiro lugar,
venho deixar duas questões no ar, eu tal como disse antes, tenho uma DBgrid e uma ADOTable conectado ao
access 2010, venho pergruntar se ha possibilidade de proteger uma ou mais linhas na grid e esconder elas ou
que os dados estejam invisiveis???
A otra situação é se existe possibilidade de adicionar files as linhas ou seja, cada linha tem informação de um
cliente, para alem dos varios dados como nome,morada,contacto etc., eu necessitava adicionar files na ficha
desses clientes como por exemplo copias de documentos relacionados, doc´s e PDF´s.
Bruno
César disse:
14/10/2013 às 6:07 pm
Boa noite Diego, estou tentando resgatar um valor do SQL, mas eu não quero resgatar um campo selecionado, eu gostaria por
exemplo de selecionar o registro 1 da coluna X, tem como eu fazer isso ? Eu sei fazer em php…mas eu não consegui em
delphi..haaha..tem como me ajudar ?
em php seria algo do genero: $dados = mysql_fetch_array($query); $var1 = $dados[‘var1’];
1 var
2 iX : integer;
3 begin
4 iX := 2; //numero da coluna do DBGrid, começando em 0
5 DBGrid1.Fields[iX].AsString;
6 //...
7 end;
[]’s
Responder
César disse:
14/10/2013 às 6:29 pm
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 32/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
César disse:
14/10/2013 às 6:43 pm
Consegui Diego.
Obrigado
1 DBgrid1.DataSource.DataSet.First;
2 while not DBGrid1.DataSource.DataSet.Eof do
3 begin
4 showmessage(DBgrid1.Fields[0].AsString);
5 DBGrid1.DataSource.DataSet.Next;
6 end;
[]’s
Bruno disse:
22/10/2013 às 6:18 am
Oi Diego tudo bom, escrevo aqui porque atraz acho que botei no lugar errado, em primeiro lugar agradecer a voce a ajuda que
me deu em relaçao à DBGrid, em segundo mais parabens para o seu blog pois ja vi que esta sempre ajudando toda
gente.Venho deixar duas questões no ar, eu tal como disse antes, tenho uma DBgrid e uma ADOTable conectado ao access
2010, venho pergruntar se ha possibilidade de proteger uma ou mais linhas na grid e esconder elas ou que os dados estejam
invisiveis???
A otra situação é se existe possibilidade de adicionar files as linhas ou seja, cada linha tem informação de um cliente, para
alem dos varios dados como nome,morada,contacto etc., eu necessitava adicionar files na ficha desses clientes como por
exemplo copias de documentos relacionados, doc´s e PDF´s.
Bruno
Responder
Opa Bruno, sobre esconder as linhas, eu trabalharia com filtro do ADOTable (propriedades Filter para definir o
filtro e Filtered para ativar ou desativar o filtro). Sobre o arquivo, você pode trabalhar com campos blob, mas eu
não recomendo. Você pode também salvar os arquivos em um determinado diretório e na sua tabela você pode
armazenar o caminho para esse arquivo. Eu particularmente não gosto desse conceito de trabalhar com arquivos
em banco de dados, mas se não tiver solução, existem essas possibilidades.
[]’s
Responder
Privacidade e cookies: Esse site utiliza cookies. Ao continuar a usar este site, você concorda com seu uso.
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
Fechar e aceitar
Cristiano disse:
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 33/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
23/10/2013 às 11:26 am
1 DBGrid1.DataSource.DataSet.First;
2 while not DBGrid1.DataSource.DataSet do
3 begin
4 if DBGrid1.DataSource.DataSet.FieldByName('Excluir').AsBoolean then
5 DBGrid1.DataSource.DataSet.Delete
6 else
7 DBGrid1.DataSource.DataSet.Next;
8 end;
Responder
Cristiano disse:
23/10/2013 às 1:37 pm
Cristiano
Acredito no caso então Cristiano que você esteja se referindo ao titulo da coluna, sendo assim, eu desconheço uma
maneira de fazer isso, lhe recomendaria um botão ou até mesmo um label estilo link com uma opção do tipo
“Marcar/Desmarcar Todos”
[]’s
Responder
Cristiano disse:
23/10/2013 às 2:10 pm
OK Diego,
Privacidade e cookies: Esse site utiliza cookies. Ao continuar a usar este site, você concorda com seu uso.
Muitosobre
Para saber mais, inclusive obrigado pelas os
como controlar informações. Vou
cookies, consulte aqui:decidir o que
Política de for
cookies mais viavel.
Fica com Deus,
Fechar e aceitar
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 34/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
Cristiano
Responder
Cristiano disse:
23/10/2013 às 3:31 pm
No aguardo,
Cristiano
Responder
Cristiano disse:
24/10/2013 às 2:57 pm
Cristiano
Responder
Cristiano disse:
01/11/2013 às 12:04 pm
Valeu,
Cristiano
seria isso?
[]’s
Responder
Cristiano disse:
05/11/2013 às 10:11 pm
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 35/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
Visual Studio da essa opção, que se chama Column Header. No delphi talvez desse certo com Data Grid ou
Listview.
Mas de qq forma, agradeço sua ajuda. Se puder me ajudar na rotina.Agradeço,
Cristiano
Diego, você pode me ajudar? estou com uma dúvida que ronda minha cabeça a um bom tempo e ja procurei em todo lugar e
nao achei.
Eu sou iniciante em Delphi 7, e eu gostaria que pudesse me ajudar com isso:
fazer uma pesquisa em um DBGrid usando um Edit, e conforme eu digito o nome parcialmente no Edit, apareça SOMENTE
os nomes que sao iguais ou semelhantes ao do Edit,
Tenho um IBTable, IBDatabase, IBTransaction e um Data Source dentro do meu Data Module.
Fico ansioso pela resposta.
Desde já, Obrigado.
Att
Luiz Otávio.
Responder
1 IBTable1.filtered := false;
2 IBTable.filter := 'campoNome LIKE ' + QuotedStr(Edit1.text+'%') ;
3 IBTable1.filtered := true;
Sinceramente não sei se vai funcionar no componente IBTable principalmente na versão do Delphi 7, você pode
tentar usar um ClientDataSet, talvez funcione.
[]’s
Responder
Só tive que mudar algumas coisinhas, veja como ficou o código final:
dm_dados.tbl_contatos.filtered := false;
dm_dados.tbl_contatos.Filter := ‘NOME LIKE ‘ + QuotedStr(Edit1.text+’%’) ;
Privacidade e cookies: Esse sitedm_dados.tbl_contatos.filtered := você
utiliza cookies. Ao continuar a usar este site, true;
concorda com seu uso.
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 36/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
http://www.youtube.com/user/TutosDelphi7
Diego, acho que aqui nao é o melhor lugar para fazer esta pergunta … mas talvez você possa me ajudar denovo.
é o seguinte, estou fazendo um programinha bem simples (uma agenda virtual), ela funciona muito bem, certinho e tal,
quando eu compilo ela dentro do delphi, funciona certinho, mas quando eu quero rodar o programa pelo arquivo executável,
da o seguinte erro: UNAVAIBLE DATABASE
OBS: todos os componentes para ligação com o Banco de Dados estão ativados.
Mestre, eu lhe recomendo deixar sempre os componentes de conexão fechado e abrir as conexão em RUN-TIME…
qual é o banco que você está usando? essa mensagem de erro ocorre quando o software não consegue se
comunicar com o Bando de Dados.
[]’s
Responder
Diego, tenho uma questão: Numa tabela eu gravo o código, mas gostaria de
mostrar no grid a descrição, nome etc, Ex. numa tabela de contrato gravo
o código do cliente, com esse código resgataria da tabela cliente o nome
e mostraria no grid, é possível??
Desde já grato
Responder
É sim… você pode usar campos de lookup ou carregar o grid a partir de uma query.
Privacidade e cookies: Esse site utiliza cookies. Ao continuar a usar este site, você concorda com seu uso.
[]’ssobre como controlar os cookies, consulte aqui: Política de cookies
Para saber mais, inclusive
Responder
Fechar e aceitar
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 37/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
Vlw Adiel
[]’s
Responder
Hemelen disse:
26/11/2013 às 4:51 pm
Olá Diego, fiz a rotina para marcar um Check na grid, entretanto na coluna desejada até forma o quadradinho, mas ao clicar
não dá o Check. O que poderia ser feito?
Responder
[]’s
Responder
Hemelen disse:
26/11/2013 às 6:19 pm
Flavio disse:
04/12/2013 às 8:40 pm
Olá Diego!!
Flavio
Fechar e aceitar
Responder
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 38/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
Leandro disse:
05/12/2013 às 11:38 pm
Ola Diego! Legal seu post, bom tenho uma duvida e espero que consiga me ajudar, estou desenvolvendo um sistema de
gerenciamento de coleta de uma determinada mercadoria, bom existem varias rotas e os clientes que terao a mercadoria
coletada estao divididos em rotas, o que gostaria de fazer e que ao inves de ter que fazer o lançamento de coletas individuais
para cada cliente tendo que lançar a data, funcionario que coletou, etc para cada cliente eu queria montar esses dados num
panel sendo necessario seta-los apenas uma vez, logo abaixo colocaria uma DBGrid e nesta eu traria todos os clientes de
determinada rota, nessa DBGrid teria apenas o nome e um campo para colocar a quantidade da mercadoria coletada, ai
quando eu for inserir no banco eu criaria uma rotina para pegar os dados do panel como data, funcionario, etc e faria um
loop para ir gravando no banco cliente por cliente, nao tenho ideia de como fazer isso, espero ter sido claro, mais uma vez
parabens e obrigado pela atenção.
Responder
DAVID disse:
06/12/2013 às 2:27 pm
Boa tarde.
Amigo gostaria de uma ajuda com o DBgrid. você poderia me add no Skype por favor
AUTORIZADABR
Responder
Josenildo disse:
20/12/2013 às 11:48 am
Olá Diego !,
Preciso de sua ajuda, Estou montando um sistema para restaurante e tenho uma tela de Delivery para entrega de pedidos,
nessa tela tenho um DBGrid que mostra o pedido do cliente e na ultima coluna registra o minuto corrente, sendo assim,
como faço para essa coluna ir registrando cada minuto que se passa para o usuario saber o tempo do pedido ?.
Abraços
Responder
[]’s
Responder
Olá Diego, esse foi um post muito prestativo(até favoritei para não perder as dicas acima ) sou apenas um estudante, gostaria
de saber como eu faço pra saber as linhas selecionadas de um DBGrid para poder obter os dados das colunas.
Vlw
Responder
Privacidade e cookies: Esse site utiliza cookies. Ao continuar a usar este site, você concorda com seu uso.
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 39/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
[]’s
Responder
Oi Diego blz?
No caso da linha zebrada vc utilizou a propriedade RecNo do DataSet, se eu estiver utilzando o componente TTable, como
faço?
Responder
Opa mestre, tudo bom? o TTable tem RecNo também, essa propriedade é nativa da classe TDataSet que é de onde
o TTable descende.
abs
Responder
Daniel disse:
29/01/2014 às 7:57 pm
Olá Diego!
Valeu!
Responder
[]’s
Responder
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 40/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
Responder
[]’s
Responder
Diego disse:
18/03/2014 às 9:36 pm
Porém quando dou um tab para sair da célula, entre em loop este evento e da erro over stack, saberia me dizer como alterar
diretamente o atributo na grid?
Responder
Talvez, o código DM.cdsValor.Post seja desnecessário, digo isso por que o DBGrid já deve repassar o POST para o
seu DataSource, mas é só um palpite.
Responder
Dunier disse:
01/05/2014 às 12:29 pm
Olá Diego Garcia, sou novato em programação, mas estou tentando programar em um dos meus projetos ocultar as linhas do
DBGrid em tempo de execução, deixando ele liso mostrando os dados porem sem linhas verticais e horizontais. Este mesmo
efeito eu consigo em propertiens —>options—>dgColLines e dgRowLines. Se puder me ajudar fico muito agradecido.
Responder
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 41/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
[]’s
Responder
Dunier disse:
03/05/2014 às 4:27 pm
Opa Diego, não avancei ainda, esta função consta do help e eu já havia testado sem sucesso. continuarei
estudando esse assunto e muito obrigado por seu tempo gasto em me responder. vlw…
johnatan disse:
08/06/2014 às 12:15 am
ola Diego PARABENS pelo post e pela Atenção a Todos,mas estou com um problema q esta me atormentando,tenho uma
tabela com produtosTABLE1 e dependendo da quantidade de produtos uma campo calculado chamado “STATUS” recebe os
valores:ESTAVEL,BAIXO ou CRITICO…minha dificuldade e que ao realizar um filtro no campo calculado ele da Erro,sera
que existe alguma maneira de filtrar campos calculados?
begin
TABLE1.Filtered := False;
if (Edit1.Text ”) then
begin
Olá Johnatan, obrigado pelo feedback, sobre a sua duvida, realmente não existe filtro em campos calculados, tente
usar um TClientDataSet ligado a TDataSetProvider e faça os filtros no TClientDataSet, talvez funcione.
[]’s
Responder
Privacidade e cookies: Esse site utiliza cookies. Ao continuar a usar este site, você concorda com seu uso.
Bom dia Diego, estou iniciando em Delphi, e usei as suas dicas, porém quando clico na coluna a qual quero que seja feita a
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
ordenação recebo o seguinte erro.
“Project PTeste.exe raised exception clas $C0000005 whith message ‘access violation at 0×00000365: read ofFechar e aceitar
address
’0×00000365′ ”
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 42/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
Caro Diego,
Tenho um DbGrid, mas estou querendo que quando der duplo clique na linha apareça a tela de atualizao de cadastro.
Responder
watson disse:
14/07/2014 às 9:58 pm
Diego, Parabens…por favor vc pode me ajuda ? Tenho alguns edits e quando o usuario efetua o cadastro quero que esses
registro vão para o Dbgrid em tempo de execução. Pois hoje eu tenho que fechar e abri o programa para atualizar… eu uso
clientdataset, sqlquery,etc… No Aguardo Obrigado
Responder
watson disse:
15/07/2014 às 10:57 am
Privacidade e cookies: Esse site utiliza cookies. Ao continuar a usar este site, você concorda com seu uso.
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
Olá Diego, estou não ! Cheguei a utilizar duas formas a 1º deu certo mas não gostei é de colocar
clientdataset.refresh no componente Timer, mas essa opção chega travar o sistema. A outra tentei mas
Fechar não
e aceitar
deu certo segue abaixo.
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 43/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
Unit2.Insert;
begin
DataModule1.ClientDataSet1.Active := true;
DataModule1.ClientDataSet1.Close;
DataModule1.ClientDataSet1.CommandText := ‘select * from transporte’;
DataModule1.ClientDataSet1.Open;
watson disse:
17/07/2014 às 1:44 pm
Odirlei disse:
01/08/2014 às 9:22 am
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 44/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
Odirlei disse:
01/08/2014 às 10:37 am
Casanova disse:
29/08/2014 às 1:26 am
Boa Tarde Diego, parabéns pelos tutoriais, sou mais um que estou precisando do seu conhecimento, estou desenvolvendo
para uma cliente um sistema de cupom fiscal, mas não estou conseguindo pegar os dados dos itens que são lançados em em
dbgrid, preciso pegar os dados tipo código item, descrição, quant., Unidade, valor, e enviar para a impressora fiscal, estou
usando impressora daruma e a dll daruma framemework, fiz um teste em edits e deu certo só não consegui mesmo foi enviar
do dbgrid, desde já agadeço.
ass: eduardo
Responder
Opa Eduardo tudo bom? O segredo é recuperar os itens do armazenamento onde o DBGrid está ligado, por
exemplo um ClientDataSet, depende de como você projetou a solução.
[]’s
Responder
Str_Aliquota := AnsiString(DBGItensVenda.SelectedField.DataSet.FieldByName(‘p_aliquota’).AsString);
Str_Qtde := AnsiString(DBGItensVenda.SelectedField.DataSet.FieldByName(‘vi_quantidade’).AsInteger);
Str_ValorUnit := AnsiString
(FloatToStr(DBGItensVenda.SelectedField.DataSet.FieldByName(‘vi_valor’).AsFloat));
Str_Codigo_Item :=
AnsiString(DBGItensVenda.SelectedField.DataSet.FieldByName(‘vi_produto’).AsInteger);
Str_UnidadeMedida :=
AnsiString(DBGItensVenda.SelectedField.DataSet.FieldByName(‘p_unidade’).AsString);
Str_Descricao := AnsiString(DBGItensVenda.SelectedField.DataSet.FieldByName(‘p_nome’).AsString);
Fechar e aceitar
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 45/46
11/09/2018 Dicas sobre o componente DBGrid do Delphi | Diego Garcia
Str_Aliquota := AnsiString(DBGItensVenda.SelectedField.DataSet.FieldByName(‘p_aliquota’).AsString);
Str_Qtde := AnsiString(DBGItensVenda.SelectedField.DataSet.FieldByName(‘vi_quantidade’).AsInteger);
Str_ValorUnit := AnsiString (FloatToStr(DBGItensVenda.SelectedField.DataSet.FieldByName(‘vi_valor’).AsFloat));
Str_Codigo_Item := AnsiString(DBGItensVenda.SelectedField.DataSet.FieldByName(‘vi_produto’).AsInteger);
Str_UnidadeMedida := AnsiString(DBGItensVenda.SelectedField.DataSet.FieldByName(‘p_unidade’).AsString);
Str_Descricao := AnsiString(DBGItensVenda.SelectedField.DataSet.FieldByName(‘p_nome’).AsString);
Hélio disse:
10/10/2014 às 1:09 pm
Diego tem como ordenar o dbgrid em ASC e DESC quando clicar no mesmo título ele mudar para ASCendente e outro Clik
para DESCendente?
Responder
Vanessa disse:
05/01/2015 às 10:10 am
Olá. Como eu poderia colocar um combobox na grid que pegasse dados gravados no banco de dados?
Responder
Diego, preciso ver dados texto contidos num campo blob, em uma tabela dbgrid. Pode me orientar? Obrigado. Eudes.
Responder
Diego Garcia
Blog no WordPress.com.
Privacidade e cookies: Esse site utiliza cookies. Ao continuar a usar este site, você concorda com seu uso.
Para saber mais, inclusive sobre como controlar os cookies, consulte aqui: Política de cookies
Fechar e aceitar
https://drgarcia1986.wordpress.com/2013/01/17/dicas-sobre-o-componente-dbgrid-do-delphi/ 46/46