 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
moisesaugusto Novato

Registrado: Quinta-Feira, 20 de Janeiro de 2011 Mensagens: 10 Localização: Bauru
|
Enviada: Qua Jan 06, 2016 6:52 pm Assunto: Botão para navegar pelas colunas do DBGrid |
|
|
Estou desenvolvendo um aplicativo em Delphi 2010, para utilizar num tablet (Windows 8.1). Como os componentes ficam muito pequenos e às vezes o usuário terá de escolher clicando em uma lista de produtos, estou tentando colocar alguns botões ao lado da DBGrid (de tamanho razoável) que lhe permita fazer a escolha com a utilização do " touch " (ainda não vou utilizar recursos de scroll através de " gestures " --- Até consegui quando estou mexendo direto na tabela (dos vendedores ) --- com o uso de " prior", " next " porém não estou encontrando referências (já pesquisei arduamente ) a como fazer um botão onde eu coloque um código para ir para outra coluna, para baixo, para cima na DBGrid --- na verdade, trata-se de inclusão de carga de caminhões, em diversos dias da semana, então tem de " navegar " entre segunda a sexta-feira. Desculpem o tamanho do tópico.
Obrigado por qualquer ajuda. |
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Jan 06, 2016 7:23 pm Assunto: |
|
|
Boa noite,
Não sei se entendi corretamente, mas experimente somar 1 na propriedade SelectedIndex do DBGrid para mover o foco para a coluna da direita, e subtrair 1 para mover para a coluna da esquerda.
Acho que para mover para as linhas de cima e de baixo devem ser utilizados os métodos Prior e Next do DataSet.
Espero que ajude
Editado pela última vez por imex em Ter Out 03, 2023 12:21 pm, num total de 1 vez |
|
Voltar ao Topo |
|
 |
moisesaugusto Novato

Registrado: Quinta-Feira, 20 de Janeiro de 2011 Mensagens: 10 Localização: Bauru
|
Enviada: Qua Jan 06, 2016 8:49 pm Assunto: |
|
|
Boa noite, Imex.
Obrigado pela resposta.
Experimentei colocar o SelectedIndex da grade + 1, porém não funcionou.
Apesar de que, teoricamente, tem lógica, né..
Quanto ao prior e next (tentei fazer isso na table que estou utilizando (são pouquíssimos produtos ), porém, também não funcionou (antes de " rolar " para baixo na tabela, sempre vai para o primeiro registro (vou experimentar ainda colocar um " TbookMark" , mas creio mesmo que tem de ser manipulada alguma propriedade do DbGrid.
Vou continuar tentando, caso encontre alguma solução, postarei neste tópico. |
|
Voltar ao Topo |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Qui Jan 07, 2016 8:17 am Assunto: |
|
|
Tenho um programa semelhante ao que você precisa e funciona assim como o Imex citou.
A sub-propriedade de Options do DBGrid chamada dgRowSelect deve estar false:
Código: | DBGrid.Options := DBGrid.Options - [dgRowSelect]; |
Botão Próxima Coluna:
Código: | DBGrid.SelectedIndex := DBGrid.SelectedIndex + 1;
DBGrid.SetFocus; |
Botão Coluna Anterior:
Código: | DBGrid.SelectedIndex := DBGrid.SelectedIndex - 1;
DBGrid.SetFocus; |
Botão Próximo Registro:
Código: | DBGrid.DataSource.DataSet.Next;
DBGrid.SetFocus; |
Botão Registro Anterior:
Código: | DBGrid.DataSource.DataSet.Prior;
DBGrid.SetFocus; |
_________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
Voltar ao Topo |
|
 |
moisesaugusto Novato

Registrado: Quinta-Feira, 20 de Janeiro de 2011 Mensagens: 10 Localização: Bauru
|
Enviada: Dom Jan 10, 2016 8:11 am Assunto: |
|
|
Olá, Natan. bom dia.
Infelizmente o código que você sugeriu não funcionou para mim. Estou utilizando windows 8.1 e Delphi 2010 ou delphi 7; tentei com os dois .
Veja você -- o teclado virtual que vem com o tablet no qual estou fazendo as experiências -- um Lenovo com SO windows 8.1, não tem as setas para baixo ou para cima - justamente as que preciso mais ( as da direita e esquerda, normal )...Estou tentando encontrar código delphi para elaborar meu próprio teclado virtual e inserir em meu aplicativo.
Abraços e, mais uma vez, agradecido. |
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Seg Jan 11, 2016 4:08 pm Assunto: |
|
|
O que está acontecendo exatamente quando você executa o método Next?
Continua indo para o primeiro registro como você disse anteriormente?
Se sim, acredito que existe algum código em algum outro evento provocando esse problema. |
|
Voltar ao Topo |
|
 |
moisesaugusto Novato

Registrado: Quinta-Feira, 20 de Janeiro de 2011 Mensagens: 10 Localização: Bauru
|
Enviada: Seg Jan 11, 2016 5:46 pm Assunto: |
|
|
Ola, Imex . tudo bem ??
Obrigado pela sua atenção, porém estou resolvendo o problema de outra forma. Eu baixei um componente teclado virtual, pena que não tenho os fontes -- porém ele me permite editar todos os botões, inclusive eu somente coloco aqueles de que necessito -- no caso em determinado form coloco somente o numérico , em outros coloco ele completo.. Está ficando beleza, pois eu aumento as fontes das letras, adequando portanto ao meu aplicativo.
Agradeço a você e a todos os demais que tentaram auxiliar-me. Aqui em Bauru estarei também à disposição, dentro de meus parcos conhecimentos.
Abraços e desejo-lhes um excelente ano de 2016, com muita saúde. |
|
Voltar ao Topo |
|
 |
moisesaugusto Novato

Registrado: Quinta-Feira, 20 de Janeiro de 2011 Mensagens: 10 Localização: Bauru
|
Enviada: Seg Jan 11, 2016 6:01 pm Assunto: |
|
|
Olá, Imex, somente para complementar, respondendo à sua pergunta :
1) Eu tenho um DBGrid, onde aparecem os produtos (são uns 20).
2) Os campos são os dias da semana (quando o caminhão é carregado com os produtos).
3) Portanto, quando eu "entro no dbgrid" , o evento dos botão (bits com glyphs para esquerda , direita, pra baixo e pra cima ) ---- deveria fazer o mesmo que as setas normais do teclado fazem -- ou seja, ir naquela direção.
4) Tentei colocar o seguinte código no botão da seta para direita (por exemplo ) :
Keyb_Event (VK_Right, 0,0,0); ---- com o form em KeyPreview=True, deveria -- teoricamente -- " dizer " ao sistema que apertei a tecla para a direita -- correto ?
Porém o que ocorre é que o cursor retorna para a primeira coluna, primeiro produto (em vez de ir para o próximo dia da semana ).Posso estar em qualquer dos produtos acontece a mesma coisa.
Ah, sim, no evento OnKey_Down (do DBGrid ) então coloco aquele código :
if Key = VK_Right then GridCarga.SelectedIndex := GridCarga.SelectedIndex + 1;
Já faz uns três dias que estou direto nisso e não consegui. Por isso que estou resolvendo de outro jeito. |
|
Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|