Logo Hardware.com.br
MARCZEWSKI
MARCZEWSKI Super Participante Registrado
655 Mensagens 17 Curtidas

Abrir ShowMessage sem parar execuçao

#1 Por MARCZEWSKI 16/11/2008 - 19:45
Estou querendo fazer o seguinte: abrir um showmessage e continuar a execuçao normal do programa.
ex:

ShowMessage("Conta inválida"
a=0; // enquanto a mensagem é exibida essa parte do codigo é executada
b=0; // sem precisar esperar o usuario clicar no OK.
c=25;
:
:

como faço isso?? (procurei na internet, mas nao achei nada do genero)

a linguagem é C++(code gear 2007)
Fergo
Fergo Highlander Registrado
9.3K Mensagens 1.1K Curtidas
#2 Por Fergo
16/11/2008 - 20:14
Não conheço o CodeGear, mas provavelmente essa função acabe por chamar a API MessageBox do Windows, que por padrão paralisa a execução do processo que a chamou.
Acho que a alternativa mais fácil é usar um formulário semelhante a caixa de mensagem e chamá-lo em uma nova thread.

Fergo
Site pessoal www.fergonez.net
Portfolio
www.fbirck.com
Artigos
Informática
MARCZEWSKI
MARCZEWSKI Super Participante Registrado
655 Mensagens 17 Curtidas
#3 Por MARCZEWSKI
16/11/2008 - 20:22
Fergo disse:
Não conheço o CodeGear, mas provavelmente essa função acabe por chamar a API MessageBox do Windows, que por padrão paralisa a execução do processo que a chamou.
Acho que a alternativa mais fácil é usar um formulário semelhante a caixa de mensagem e chamá-lo em uma nova thread.

Fergo

Eu ja tinha pensado nessa soluçao, mas achei que tinha outra.

O codegear chama mesmo a API MessageBox do windows.

vc poderia esclarecer um pouco essa parte da citaçao?

... a caixa de mensagem e chamá-lo em uma nova thread.
Estarei um pouco ausente do forum por um tempo!!!

Caso seja importante, mande MP(duvidas somente no forum)

grato,
MARCZEWSKI
MARCZEWSKI Super Participante Registrado
655 Mensagens 17 Curtidas
#5 Por MARCZEWSKI
16/11/2008 - 21:15
Desbravador_ disse:
Sugestão:

Enquanto a mensagem é exibida, seus comandos seram executados.

Void acesso()
{
timer1->start(10);//Inicia timer com 10ms
ShowMessage("Mensagem");
}

void timer1....()
{
timer1->start(false);//Para timer
a=1;
b=2;
........
}

Eu sinceramente nao entendi direito essa sua sugestao!!

Um exemplo do que pode acontecer:
Estou executano um trecho do codigo e de repente preciso exibir uma mensagem(ShowMessage) ao usuario. do jeito que quero fazer, a mensagem esta sendo exibida e o codigo continua sendo executado normalmente,(supondo que o usuario foi tomar um cafe, e nao fechou a mensagem(ShowMessage()) chegando em outra parte do codigo preciso exibir outra mensagem(ShowMessage) ao usuario. como ja tem uma aberta, as duas devem ficar aberta ate o usuario fecha-las, e se mais na frente precisar abrir outra e o usuario ainda nao tiver fechado nenhuma, vai acumulando showmessage's na "cara dele".

espero que com essa explicaçao, vcs possam me ajudar!!!
Estarei um pouco ausente do forum por um tempo!!!

Caso seja importante, mande MP(duvidas somente no forum)

grato,
MARCZEWSKI
MARCZEWSKI Super Participante Registrado
655 Mensagens 17 Curtidas
#6 Por MARCZEWSKI
16/11/2008 - 23:22
Pensando aqui mais um pouco, tive a seguinte "ideia".
criar uma "thread" ,ou algo do genero, dentro desta thread teria a linha de comando ShowMessage(mensagem). sendo que nao me interessa o endereço na memoria desta thread(pois nao preciso saber so o usuario fechou ou nao a janela).
Nao manjo muito de thread(comecei a mexer agora com threads).
"fiz"(o codegear gerou o scorpo da classe) seguinte codigo

class teste: public TThread
{
private:
protected:
void __fastcall Execute();
public:
__fastcall teste(bool CreateSuspended, AnsiString x);

};


__fastcall teste::teste(bool CreateSuspended, AnsiString x)
: TThread(CreateSuspended)
{

}
//---------------------------------------------------------------------------
void __fastcall teste::Execute()
{

ShowMessage("OLA"

}
//---------------------------------------------------------------------------


os problemas que estao dando ai sao:
1. a janela do ShowMessage esta totalmente fora do padrao o windows.(conforme eu vou chamando ela vai se ajustando ao padrao windows)
2. quando tento chamar a segunda vez a thread(sendo que a primeira vez eu nao fechei a janela do show....) da varios erros
3. nao conseguir jogar o parametro "x" para o showmessage(se colocar no execute(AnsiString x) da erro.

alguem tem um outro codigo que faça o qeu estou querendo fazer, ou sabe como ajeitar este pra resolver o problema???
Estarei um pouco ausente do forum por um tempo!!!

Caso seja importante, mande MP(duvidas somente no forum)

grato,
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal