ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Executar um evento no meio de uma função

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
supgaroto
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 11 de Dezembro de 2006
Mensagens: 136

MensagemEnviada: Seg Abr 09, 2012 9:10 pm    Assunto: Executar um evento no meio de uma função Responder com Citação

É possivel executar um evento ex: preencher um edit no meio de uma função ou procedure e assim q terminado o preenchimento retomar o processo?
Como se a função estivesse esperando o preenchimento do item.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
wendellgoncalves
Novato
Novato


Registrado: Quarta-Feira, 16 de Novembro de 2011
Mensagens: 63

MensagemEnviada: Seg Abr 09, 2012 11:48 pm    Assunto: Responder com Citação

qual e a tua ideia
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
supgaroto
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 11 de Dezembro de 2006
Mensagens: 136

MensagemEnviada: Ter Abr 10, 2012 8:32 am    Assunto: Responder com Citação

wendellgoncalves escreveu:
qual e a tua ideia


Ex:
Código:

Function UmFuncaoQualquer : Retorno
begin
  dm.cdsX.open;
  while not dm.cdsX.eof do begin
    Edit1.Text := dm.cdsXDescricao.asstrig;
    Edit1.setfocus;
    ..... // aqui haveria uma pausa aguardando o preenchimento do edit.
    dm.cdsX.next; // Após preenchimento retomar o processo.
  end;
end;


Não é bem essa função que preciso mais é algo bem parecido!!
Consegui ser claro?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
felipecaputo
Colaborador
Colaborador


Registrado: Quinta-Feira, 13 de Mai de 2010
Mensagens: 1719
Localização: Florianópolis / SC

MensagemEnviada: Ter Abr 10, 2012 8:41 am    Assunto: Responder com Citação

Olá amigo, no caso a maneira mais simples que eu vejo seria:
- Essa função sua ficaria em uma thread separada
- Quando ela passasse a aguardar o resultado do edit ela utilizaria uma variável de controle tipo

Código:
  while not dm.cdsX.eof do begin
    Edit1.Text := dm.cdsXDescricao.asstrig;
    Edit1.setfocus;
    while not EditFilledConfirmation do
      Sleep(500);  //O Sleep é para não forçar o processador a verificar a cada milisegundo
 
    dm.cdsX.next; // Após preenchimento retomar o processo.
  end;


e na thread seria

Código:
procedure SuaThread.Execute;
begin
  VariavelDeRetorno := UmFuncaoQualquer;
  ...Alguma coisa para liberar a aplicação indicando que a thread terminou.
end; 


lembrando que este processo seria assíncrono
_________________
if Post.State = psResolvido then
Post.Caption := Post.Caption + ' [RESOLVIDO]';
_____________________________________________
O único homem que está isento de erros, é aquele que não arrisca acertar. Albert Einstein
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
tanure
Profissional
Profissional


Registrado: Segunda-Feira, 7 de Novembro de 2011
Mensagens: 712

MensagemEnviada: Ter Abr 10, 2012 9:44 am    Assunto: Responder com Citação

olá felipe eu não entendi muito bem o sleep

e se o usuario digitar depois do sleep ou simplesmente não digitar?

supgaroto

seria mais fácil vc explicar o que vc precisa, se o edit1 tem que ser
preenchido antes do edit2 ou se não precisa, seria viável você falar
os detalhes do processo

espero ter sido útil

motivo edit: erro portugues Sad
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
felipecaputo
Colaborador
Colaborador


Registrado: Quinta-Feira, 13 de Mai de 2010
Mensagens: 1719
Localização: Florianópolis / SC

MensagemEnviada: Ter Abr 10, 2012 10:27 am    Assunto: Responder com Citação

tanure, o sleep está sendo executado dentro de uma thread e de um while isto é, enquanto não acontecer ele continua aguardando
_________________
if Post.State = psResolvido then
Post.Caption := Post.Caption + ' [RESOLVIDO]';
_____________________________________________
O único homem que está isento de erros, é aquele que não arrisca acertar. Albert Einstein
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
tanure
Profissional
Profissional


Registrado: Segunda-Feira, 7 de Novembro de 2011
Mensagens: 712

MensagemEnviada: Ter Abr 10, 2012 10:29 am    Assunto: Responder com Citação

felipecaputo escreveu:
tanure, o sleep está sendo executado dentro de uma thread e de um while isto é, enquanto não acontecer ele continua aguardando


não tinha visto o while, desculpa a vergonha que eu passei
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
felipecaputo
Colaborador
Colaborador


Registrado: Quinta-Feira, 13 de Mai de 2010
Mensagens: 1719
Localização: Florianópolis / SC

MensagemEnviada: Ter Abr 10, 2012 10:40 am    Assunto: Responder com Citação

no problem! Very Happy

Não é vergonha
_________________
if Post.State = psResolvido then
Post.Caption := Post.Caption + ' [RESOLVIDO]';
_____________________________________________
O único homem que está isento de erros, é aquele que não arrisca acertar. Albert Einstein
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB