• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Cypher

[vb6] MSGBOX como apagar

26 mensagens neste tópico

Bem gostava de saber como terminar uma msgbox sem carregar no ok  :cheesygrin:

Desta meneira -> mosta a msgbox no meio do prog e depios cria que sai-se automáticamente!!!! n sei algum clique nas coordenadas do "ok"

algum tipo de "unload ... "   

Atenção necessito mesmo da msgbox .... se alguem souber uma maneira :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
(simplesmente não comentem com a criação de outra form parecida há msgbox )

Ok,.. não comento! :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não comento porque a unica coisa qeu eu me lembrei era isso mesmo! eheh

Mas desculpa insistir, não pode MESMO ser um form com funções de msgbox?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

não a parte de interface.. pk assim criava outra form td muito simples !!! mas sim  o que fazum msgbox !

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Diz-me duas coia(para te poder ajudar)... para que queres a msgbox e porque tem de ser mesmo uma msgbox.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

agora n tenho tempo ja reposndo ha noite .. sry mas posso te dizer que necessito mesmo da msgbox (a sério)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

...mas posso te dizer que necessito mesmo da msgbox (a sério)...

Eu acredito, mas aja agora gostava de saber porque se poder é claro  ;)

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem o problema é o seguinte no meio de um programa necessito de enviar dados para um servidor que neste caso será um utilizador ! este servidor está ligado a vários clientes por diferentes portas, apos estarem todos os clientes conectados ao servidor necessito que este me envie automáticamente para cada um dos clientes dados, o que não acontece...

    strsend = ""
    tsend = ""
    For ii = 1 To 7
        strsend = strsend & "&" & dados_send(ii)
    Next ii
    
    tsend = "dados_iniciais" & strsend
    WskS1.SendData tsend
    
    agora = Now
    lst_monitor_server.AddItem (agora + " - dados enviados")

    strsend = ""
    tsend = ""
    For ii = 7 To 15
        strsend = strsend & "&" & dados_send(ii)
    Next ii
    
    tsend = "dados_iniciais" & strsend
    WskS2.SendData tsend
    
    agora = Now
    lst_monitor_server.AddItem (agora + " - dados enviados")

deste modo só me vai enviar dados para o ultimo cliente!

agora se eu meter uma msgbox antes do

WskS1.SendData tsend
e do
WskS2.SendData tsend
ja me vai enviar para os dois só que assim irá ser necessário que o utilizador que fique de servidor tenha a aparecer no seu screen uma msgbox cada vez que envia algo!

O Grande problema é o seguinte só consigo enviar dados se tiver uma msgbox antes do SendData ou se tiver um botão para cada SendData! 

Só que eu não queria que mostra-se nada disto que simplesmente envia-se os dados automáticamente...

Uma solução um bocado "esquezita" era mostrar a msgbox e depois apaga-la automáticamente ! ? Será isto possivel ?!

Outras soluções são sempre bem vindas!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois... estava a axar estranho essa historia da msgbox  :D

É assim sinceramente não sei o porque de issu te estar a acontecer uma vez que estas a utilizar portas e componentes(winsock1 e winsock2) diferentes... Mas pronto... O que esta a acontecer(baseadome no que explicaste) penso eu que seja o seguinte:

Quando fazes "WskS1.SendData tsend" ele começa a enviar os dados da variavel tsend como deves saber, mas, quando ele chega a "WskS2.SendData tsend" ainda não enviou os dados da primira("WskS1.SendData tsend") e entao comessa a enviar os dados da segunda e os da primeira nao têm efeito e assim sucessivamente, dai só te enviar os dados para o ultimo...

Agora é assim, podes resolver issu de plomenos 2 formas. Se a informação a enviar for pouca entao podes trabalhar com o evento "SendComplete" do componente, e a ideia é a seguinte:

O evento "SendComplete" é chamado quando o envio de um pacote é comcluido, então cria-se uma uma variavel tipo boolean que ao ser o evento SendComlpete" chamado lhe mete o valor True. E quando  fazes WskS1.SendData tsend logo a seguir metes o valor da variavel a False, e depois metes issu num ciclo do tipo:

" Enquanto toda a informação nao for enviada faz

        Se varBoolean = true então

              winsockx.senddata varDados

        fim se

fim ciclo"

A ideia é +/- esta. Agora.... se a informação a enviar for muita istu assim não et vai servir porque como disse o evento "SendComplete" é chamado a quando o envio de um pacote é concluido, logo se a informação é muita vais precisar de enviar varios pacotes logo istu nao vai funcionar... a menos que faças as contas a informação que tens e chegues ao numero de paquites que vais enviar...

A outra forma é a seguinte:

Á linha WskS1.SendData tsend acrescentas p exemplo " & "fim" " que vai ficar algo do tipo -> WskS1.SendData tsend & "fim"

O que vai acontecer é que no fim da informação a enviar vais ter a palavra "fim". Istu serve para quando tens de enviar mais de um pacote saibas quando chegou ao fim caso nao queiras fazer contas.. Istu funciona assim:

Envias os dados -> WskS1.SendData tsend & "fim" e depois do "outro lado" vai funcionar assim:

"Se os ultimos 3 caracteres da informação recebida forem igual a "fim" então

        Recebeu a informação toda

        Se não, então

                vai juntando a informação recebida

fim se"

Ou seja, quando recebes a info enviada verificas se os ultimos 3 caracteres são "fim" se forem tudo bem, é porque ja enviou toda a info, se não forem, então vais juntando toda a info arecebida ate que chegue a palavra "fim".

Se estou enganado no meu racioncinio que me corrijam  :D

Espero ter ajudado ;)

P.S.

Ja que istu te esta a acontecer com componentes e portas diferentes porque não juntas tudo no mesmo componente e na mesma porta :P

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boa  ;)é uma alternativa tenho que exprimentar!

não junto tudo na mesma porta pois é para enviar para a clientes diferentes e assim ao fim de enviar a um cliente tinha que fechar a porta e abrila para o outro cliente ou seja abrir fechar.... (ou não é bem assim )

Depois eu digo Alguma coisa!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não. Podes ter apenas um componente no teu projecto e conseguires conectarte a varios compotadres pela mesma porta, é cmo teres varios componenet num só ;)

Para fazeres issu basta utilizares um control array nesse comopnente.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas tenho de fechar de qualquer das maneiras a porta para poder enviar para o outro cliente pois os ips são diferentes dos clientes...E ao fechar a porta para os outros clientes tem que se conectar outravez....que n vai dar grande geito, assim no servidor deixo uma porta diferente para cada cliente se conectar ao servidor!!! E para aquele cliente utilizo só aquela porta! Tenho que exprimentar a 1º opção que me deste !!!

Quando fazes "WskS1.SendData tsend" ele começa a enviar os dados da variavel tsend como deves saber, mas, quando ele chega a "WskS2.SendData tsend" ainda não enviou os dados da primira("WskS1.SendData tsend") e entao comessa a enviar os dados da segunda e os da primeira nao têm efeito e assim sucessivamente, dai só te enviar os dados para o ultimo...
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Mas tenho de fechar de qualquer das maneiras a porta para poder enviar para o outro cliente pois os ips são diferentes dos clientes...E ao fechar a porta para os outros clientes tem que se conectar outravez

Tenho quase a certeza que não, podes estar conectado a varios pc's atrave da mesma porta. Eu ja fiz issu num servidor, tipo, criei um control array para o componente winsock e depois recebia varias conecções de computadores diferentes na mesma porta e conectados ao mesmo tempo.

Citar

Quando fazes "WskS1.SendData tsend" ele começa a enviar os dados da variavel tsend como deves saber, mas, quando ele chega a "WskS2.SendData tsend" ainda não enviou os dados da primira("WskS1.SendData tsend") e entao comessa a enviar os dados da segunda e os da primeira nao têm efeito e assim sucessivamente, dai só te enviar os dados para o ultimo...

Depois dá noticias ;)

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois vou mesmo utilizar a tua 1 opiniao  ;) lá pas 4 da matina :2funny: ja mando noticias!  :bye2: lol

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois lá está o problema da msgbox :P era suposto que depois de enviar atravez do senddata fixese tudo bem, mas n :P e decidi por uma msgbox  no send complete e vejam ja deu ?!!?  :rant_01:

NuGuN podes me explicar a ideia mais ao promenor , pk n consegui fazer da maneria que tu dizias por o sendata dentro de uma estrutura de repetição!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes mostrar o código pra se ver o que esta mal ou o que se tem de alterar/acrescentar?

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

épa sinceramente n consegui fazer nada :P nao  tentei utilizar isto

" Enquanto toda a informação nao for enviada faz
        Se varBoolean = true então
               winsockx.senddata varDados
        fim se
fim ciclo"

mas n soube o que havia de por -> " Enquanto toda a informação nao for enviada faz... :-[

mas meti a seguir ao senddata a verificar se tinha ido ao send complete e não!
épa sinceramente n consegui fazer nada  nao  tentei utilizar isto

" Enquanto toda a informação nao for enviada faz
        Se varBoolean = true então
               winsockx.senddata varDados
        fim se
fim ciclo"

mas n soube o que havia de por -> " Enquanto toda a informação nao for enviada faz... :-[

mas meti a seguir ao senddata a verificar se tinha ido ao send complete e não!

varBoolean =false
sendDATA varDados
if varBoolean = true then msgbox ("enviou")

e no evento sendcomplet pus 
varBoolean = true

e não deu kal é a minha admiração quando ponho uma msgbox antes do senddata assim :

varBoolean =false
msgbox ("kalker coisa")
sendDATA varDados
if varBoolean = true then msgbox ("enviou")

podes me explicar melhor a tua ideia ou será que tb ja não dá???

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

bem.. sem o cilco nao vais lá!  :P

O " Enquanto toda a informação nao for enviada faz" pode-se "traduzir" para código da seguinte forma:

Imagina estas a trabalhar com 4 winsocks com um control array:

dim i as byte

for i = 0 to 3
      varboolean = false
      winsock(i).senddata "Infor aqui"
      do while varboolean = false 
            'enquanto nao é enviada a informação faz este loop
      loop
next i

Este código metes numa função ou num evento de um botão, etc. Depois no evento SendComplete do winsock metes:

varboolean = true

   

Eu não testei istu, escrevi issu agora para teres uma ideia de como podes fazer, é possivel que não funcionem correctamente ou ate mesmo que não funcione sem antes levar umas alterações.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem tal como eu espera infelizmente ;) o pc encrava no loop :P

ou seja nunca chega a mandar os dados...

Exprimentei por uma msgbox antes do sendData e já deu ?!

Tá me a parecer que o msgbox faz maravilhas!!!

Alguem me pode explicar!?

Atenção n utilizei o winsock como array!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Amsgbox não faz milagres, como te disse eu n exprimentei esse código e talvez ele nem funcione como esta, faltao-lhe coisas, p exemplo, convem verificar se o componente actual esta ou não conectado porque se não estiver logicamente nao envia dados, se levar uma linha no fim com um DoEvents tambem vai ajudar e talvez seja a razão pela qual issu não funciona. Volto a dizer, talvez essa não seja a melhor forma de fazer o que queres, mas fiz esse código apenas para te dar uma ideia de como se pode fazer.

Com a msgbox funciona porque enquanto tu nao carregas no botão da msgbox para ela desaparecer o programa esta parado e a informação esta a ser enviada mas se fizeres o que querias, ou seja, mandar a msgbox e em seguida carregar logo no botão, se istu for feito mt rápidamente e se a ligação ao outro computador não for a mais rápida a msgbox não te vai valer de nada.

Eu ja fiz programas desses e funcionavam, a diferença é que tinham mais umas coisas... agora, se preferes utilizar uma msgbox é contigo ;)

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois a msgbox é k eu n queria utilizar

tenho que exprimentar com o array...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora