DBGrid

Delphi

28/11/2003

Qual é evento no DBGrid para quando se muda de registro, independente de ser através do click do mouse ou pela barra lateral?


Gandalf

Gandalf

Curtidas 0

Respostas

Marcelo.c

Marcelo.c

28/11/2003

Experimente utilizar o evento AfterScrool do DataSet exibido no DBGrid.


GOSTEI 0
Gandalf

Gandalf

28/11/2003

cara o problema e que eu tenho que fazer isso na form por causa de um loop e eu to usando data module
se tiver outro jeito me fala senão um ponho um dataset na form

muito obrigado!!!


GOSTEI 0
Marcelo.c

Marcelo.c

28/11/2003

Você pode declarar o Form onde está o DBGrid no uses do DataModule e criar o código no evento AfterScrool.

Você pode, por exemplo, utilizar este código:

FormGrid.DBgrid1.Visible:=False;

Assim você está indicando que deseja alterar o DBGrid1 do Formulário FormGrid.


GOSTEI 0
Gandalf

Gandalf

28/11/2003

o problema e que eu preciso modificar o valor de uma string que esta na form


GOSTEI 0
Marcelo.c

Marcelo.c

28/11/2003

o problema e que eu preciso modificar o valor de uma string que esta na form
Se for uma variável, você pode declará-la como global.


GOSTEI 0
Gandalf

Gandalf

28/11/2003

como eu fao iss^?


GOSTEI 0
Marcelo.c

Marcelo.c

28/11/2003

Você declara a variável logo acima da chamada [b:b13f3a79bc]implementation[/b:b13f3a79bc], juntamente com a declaração do Form:

var
     F_Menu: TF_Menu; variavel: String;

implementation

uses ...

($R *.DFM)


Então, com o formulário declarado no uses, você pode utilizar esta variável em qualquer outro Form.


GOSTEI 0
Gandalf

Gandalf

28/11/2003

cara, a varialvel ja esta neste local porque varias procedures trabalham com ela. no data module eu coloquei assim e deu erro:

FormProducaoPecaConsulta.loop := ´a´;

esta errado esse codigo?


GOSTEI 0
Marcelo.c

Marcelo.c

28/11/2003

FormProducaoPecaConsulta.loop := ´a´;
Só por esta linha não dá para dizer o que pode estar errado.

Coloque aqui o código da procedure loop e também a mensagem de erro emitida.


GOSTEI 0
Gandalf

Gandalf

28/11/2003

vamos la:

essa loop é uma varial tipo string.
tenho um componente Time que verifica a cada meio segundo se na tabela PECA foi mudado de registro. se foi ele chama uma outra tabela de nome OPX(onde x é o codigo da peça). para saber se o registro foi mudado, eu coloquei no evento BeforeAction do DBNavigator da tabela peça uma procedure que grava como ´a´ a variavel loop. o componente time verifica se loop é igual a ´a´. se for executa uma rotina que muda a prorriedade tablename do ibtableOPx para o novo codigo da peça em que se esta o registro. depois grava com ´b´ a variavel loop. Isso para que nao fique executando essa rotina a cada meio segundo, o que inviabilizaria a navegação pela tabela OPx, ja que ficaria trocando de tabela a cada meio segundo.

Para facilitar a procura das peças coloquei um componente DBGrid na form, por isso preciso saber como faço para o programa perceber que foi mudado de registro pela dbgrid e gravar a varialvel como ´a´.


GOSTEI 0
Rafael Heise

Rafael Heise

28/11/2003

Você está usando uma DBGrid certo?
se você está usando DBGrid, com certeza você teve de associar a ela um DataSource. Se você associou um DataSource então associou um TQuery ou TTable ou algum TDataSet. Pois bem... no TDataSource, existe uma propriedade OnDataChange, que é a cada mudança de registro do TDataSet, ou seja, da sua tabela. Use lá ao invés do AfterScroll e talz, porque o AfterScroll comigo não funcionou muito bem... sei lá porque...
Se você usar esse evento, cada vez que você mudar de registros, ele vai disparar esse evento, e ai você pode mudar sua variável para ´a´.
Beleza?
é isso ae...

Pessoal, temos que conhecer os componentes que trabalhamos... dessa forma, acharemos mais rápido a solução de nossos problemas!!!!!
Valeu!!! =)


GOSTEI 0
Marcelo.c

Marcelo.c

28/11/2003

Gandalf,

Você não indicou qual a mensagem de erro aparece, mas...

Experimente utilizar apenas:

loop:= ´a´;

Como é uma variável Global, não é necessário indicar o Form de origem.


[quote:0b4453aad6=´zerneo não mediu suas palavras mas ´]Pessoal, temos que conhecer os componentes que trabalhamos... dessa forma, acharemos mais rápido a solução de nossos problemas!!!!![/quote:0b4453aad6]

O evento AfterScrool funciona perfeitamente comigo, o fato de você não ter conseguido utilizá-lo não quer dizer que não funcione.

Talvez o comentário acima também se aplique a você.

Acredito que as pessoas que freqüêntam este fórum o fazem em busca de conhecimento, não sendo, portanto, obrigados a saber tudo. Na minha opinião, comentários deste tipo servem apenas para criar uma aura de desconforto e deixar o autor mal visto entre os membros.


GOSTEI 0
Gandalf

Gandalf

28/11/2003

pois é
não sei o quanto esse cara sabe de delphi
eu não tenho dinheiro para fazer um curso de delphi
esse ano eu tava servindo o exercito, iso quer dizer que ninguem contrata um cara que ta fazendo exercito

minha mae é aposentada publica e meu pai e desempregado, não posso ficar parado dando dispesa para eles

ai aparece uma boa alma e diz: vc quer fazer um softer que controle o meu estoque e controle minhas ordens de serviço.

o que eu deveria fazer, não aceitar efalar para ele passar daqui uns dois anos, quem sabe la eu ja saberia alguma coisa de programação. mas eu aceitei, mesmo sem saber nada de delphi

por isso venho aqui para fazer perguntas cretinas

um abraço para os atenciosos com moloides como eu, aos demais obrigado.


GOSTEI 0
Marcelo.c

Marcelo.c

28/11/2003

Não esquenta, Gandalf. Há muitas pessoas no fórum dispostas a ajudar. A melhor coisa que você faz é ignorar e continuar perguntando, afinal ninguém nasceu sabendo. :wink:

Aliás, você não disse se resolveu o problema. Conseguiu ?


GOSTEI 0
Rafael Heise

Rafael Heise

28/11/2003

Bom, em primeiro lugar não quis fazer esse comentário para ofender ninguém.
Realmente, não nasci sabendo nada, e nunca fiz um curso de delphi. Aprendi tudo sozinho! Trabalhei 1 ano e meio com delphi no início da minha ´carreira profissional´ sem internet. Tive que aprender tudo na marra lendo o help do delphi e os helps que eu tinha na máquina (os que vem com as instalações de componentes e com a instalação do delphi) e nem sabia tanto de ingles. Ainda não sei muito, mas aprendi bastante lendo os helps. Eu não me queimo quando falam algo assim a meu respeito, mas me queimo quando eu vejo que eu consegui aprender me batendo um monte e não desejo isso pra ninguém e pra CONHECIMENTO DE TODOS, eu tento ao máximo ajudar a todos aqui do fórum. (Vejam no fórum a quantidade de mensagens que eu coloquei e a quantidade que eu respondi se duvidam disso!!!). Quando falei que devemos conhecer os componentes, não ACHAM VERDADE??? Você marcelo., se você não conhece os componentes que você trabalha, como faria os seus programas? Eu disse isso para estimular que todos aqueles que programam, que conheçam a sua ferramenta de trabalho, pois assim vai ficar muito mais muito mais fácil fazer, ou você não concordo comigo?? Pense bem e me responda. Não estou chamando ninguém de burro. Nunca fiz isso. Mas quero apenas que as pessoas vejam e repassem isso para todos, pois não é por mim que falo isso, e sim para todos que programam. Quer satisfação maior pra você mesmo do que ter que fazer uma coisa e conseguir fazer sem depender de ninguém. Ou você não se sente bem quando tem um desafio ou um pr
Se ofendi com alguma coisa, me desculpe. E eu realmente não conheço todos os componentes, mas sempre que tenho tempo, leio o help para ver as propriedades que tem, faço programinhas teste simplesmente para ver a funcionalidade de cada evento e cada propriedade. E gostaria apenas de mostrar e estimular isso a todos, pois vejo por mim, que é uma coisa boa!

abraços a todos, e mais uma vez, desculpe por qualquer ofensa.

ps: não sei tudo de delphi!


GOSTEI 0
Rafael Heise

Rafael Heise

28/11/2003

ograma pra fazer e consegue fazê-lo, sem que um monte de gente tenha que vir fazer pra você? Se você não se sente bem, então o que você sente quando compila alguma coisa e a mesma funciona? Ou você faz isso simplesmente para ´ter o seu´ [salário] no fim do mês??? Se você pensa assim, você não trabalha nisso com amor. Eu digo com orgulho, que estou nessa profissão porque gosto muuuuuito de programar. E me sinto bem com isso. Então, quando falo algumas coisas, que para alguns que não conseguem VER o lado bom disso, é para estimular o aprendizado, e fazer com que a pessoa aprenda a se virar sozinha, para não depender de outros, pois se algum dia ele tiver que trabalhar sem internet, e numa tarde ele tiver que resolver alguma coisa, como ele vai fazer? Ele vai ter que se virar sozinho. Como dizem por isso, [b:5212ebcd49]´deve se ensinar a pescar e não dar o peixe´[/b:5212ebcd49]. Então, é isso ae.
GOSTEI 0
Marcelo.c

Marcelo.c

28/11/2003

zerneo,

Me desculpe, você tem toda a razão quando diz que devemos ´ensinar a pescar e não apenas dar o peixe´.

Também tem toda razão quanto ao conhecimento dos componentes, aliás este é um dos motivos que me fazem freqüêntar este fórum. Aprendo muito respondendo e observando as respostas postadas.

Estou ciente do quanto você ajuda os membros do fórum, e isto despertou em mim muito respeito em relação a você.

Eu comecei na programação em uma época em que a internet apenas engatinhava no Brasil, então entendo perfeitamente quando você fala a respeito do prazer de descobrir, sozinho, como implementar as soluções imaginadas ou escritas no papel.

Talvez a minha interpretação da sua mensagem tenha sido equivocada, mas acredito que a forma como você colocou tenha induzido a isto. De toda forma eu não precisava ter comentado nada sobre isso, pelo menos não publicamente.

Me desculpe mais uma vez e se precisar de qualquer coisa...

Estamos aí...


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

28/11/2003

Colegas,

Parabéns a ambos pela maturidade em que demonstraram ao resolver este ´conflito´. Um bom profissional precisa ter inteligência emocional além da competência técnica.
Lembrem-se que erros honestos fazem parte de nosso crescimento e a nossa habilidade em resolve-los é que nos diferenciam no mercado de trabalho.


GOSTEI 0
POSTAR