DOEVENTS

USUARIO.EXCLUIDOS 18/01/2005 11:58:36
#61553
Olá pessoal.
Sou super novato em Vb e preciso de uma ajudinha,

Tenho o seguinte código

Filecopy "Origem" , "destino"

COmo uso do Events para quando a cópia do arquivo começar eu poder continuar usando o comando Timer sem que ele pare?
USUARIO.EXCLUIDOS 18/01/2005 12:15:40
#61558
Não foi exatamete isto , foi porque os usuários não compreenderam muito bem , então resolvi postar outra , mais desculpe se atrapalhei , vou procurar não fazer isto . E como sou novo no Fórum , nem sabia que existiam tais regras , vou dar uma lida nelas agora.

OBRIGADO.
GABRIEL.LOGAN 18/01/2005 12:21:24
#61561
Entendi seu intuito, percebi que você quiz ser mais especifico na sua pergunta, mas como o meu trabalho é fiscalizar o fórum eu tenho que zelar pela harmonia das regras do forum.

OBRIGADO.

IVOFABIANO 18/01/2005 13:35:53
#61576
colocando a propriedade INTERVAL = 1000

Private Sub Timer1_Timer()
Do events
End Sub


Era isso ??
GABRIEL.LOGAN 18/01/2005 13:39:35
#61577
Creio que não é isso não IVOFABIANO, pois o timer fica inativo, então o DOEVENT tem que acontecer sem o timer por que se for dentro de um timer não funciona ja que ao executar o programa o timer fica inativo automaticamente.

Ele quer justamente poder usar o timer sem que ele pare de funcionar na hora que o programa estiver copiando o arquivo.
USUARIO.EXCLUIDOS 18/01/2005 13:43:38
#61579
usando file copy o que você vai conseguir fazer é:

em uma lista de vários arquivos que devem ser copiados de um lado para o outro, colocar um loop - e depois do filecopy colocar o doevents (normalmente isto é feito com um vídeozinho que fica simulando a cópia e tem uma barra progressiva que é atualizada a cada fim de arquivo)
exemplo:

(nao tenho o vb - sugiro checar os comandos)

progress1.max = filelen(arq1) + filelen(arq3) + filelen(arq5)

filecopy arq1, arq2
doevents
progress1.value = filelen(arq1)
filecopy arq3, arq4
doevents
progress1.value = filelen(arq1) + filelen(arq3)
filecopy arq5, arq6
progress1.value = filelen(arq1) + filelen(arq3) + filelen(arq5)

(coloque em um loop - a logica eh essa)


para fazer algo mais "real" - vc precisaria abrir o arquivo em modo binario e a cada copia para o outro lado vc atualiza o progress...

(exemplo com input e output - ideal por binary)

progress1.max = filelen(arq1)

i=freefile
open arq1 for input as #i
j=freefile
open arq2 for output as #j


do while not eof(i)
line input #i, linha
print #j, linha
progress1.value = progress1.value + len(linha)
doevents
loop

close #i
close #j

ja vou avisando que o doEvents vai aumentar e muito o tempo de execucao da rotina e que para a barra um refresh ja deve ser o suficiente
IVOFABIANO 19/01/2005 09:25:54
#61740
Complemntando e minimizando o problema de tempo de execução com o Do Events.

Substitua o Do Events assim:

'Num Módulo
Private Declare Function GetInputState Lib "user32" () As Long

' Onde tiver o Do Events :

If i Mod 2 Then
If GetInputState() <> 0& Then DoEvents
End If


Com isso ele só ocorre quando houver um evento de "interface"
Dá pra ganhar uns segundinhos de performance.

Abs
Tópico encerrado , respostas não são mais permitidas