Jump to content

progressbar marquee


Recommended Posts

tou a usar uma progressbar marcada como marquee assim que o programa arranca ele ja esta a andar de um lado pro outro assim que carrego no botao que tem o seguinte codigo e vai me fazer o restante codigo parece que o programa fica parado sem responder...

alguem consegue dar uma dica?

ProgressBar1.Style = ProgressBarStyle.Marquee
	ProgressBar1.MarqueeAnimationSpeed = 150
... restante codigo
Edited by gastao
Link to post
Share on other sites
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
progressbar1.style = progressbarstyle.marquee
progressbar1.marqueeanimationspeed = 150

Dim strIniFile As String = My.Application.Info.DirectoryPath & "\config.ini"
	'Le qual o caminho das Facturas escrito no Ini
	Dim bdsql As String = GetIniSetting("CaminhoBaseDados", "InformaVendas", strIniFile)
	Dim bdnome As String = GetIniSetting("NomeBaseDados", "InformaVendas", strIniFile)
	Dim bduser As String = GetIniSetting("User", "InformaVendas", strIniFile)
	Dim bdpass As String = GetIniSetting("Password", "InformaVendas", strIniFile)
	Dim Caminho As String = GetIniSetting("Caminho", "InformaVendas", strIniFile)
	Dim TipoMovimento As String = GetIniSetting("TipoMovimento", "InformaVendas", strIniFile)
	Dim Narmazem As String = GetIniSetting("Narmazem", "InformaVendas", strIniFile)
	Dim localizaçao As String = GetIniSetting("localizaçao", "InformaVendas", strIniFile)
	Dim mailrecebe As String = GetIniSetting("mailrecebe", "InformaVendas", strIniFile)
	Dim datenow As String = DateTime.Now
	Dim sqlpass As String = bdpass
	sqlpass = AES_Decrypt(sqlpass, "somepassword")
	'conexao SQL
	connetionString = "Data Source='" & bdsql & "';Initial Catalog='" & bdnome & "'; Integrated Security=false; User Id='" & bduser & "';Password='" & sqlpass & "';"
	Dim myConnection As New SqlConnection(connetionString)
	Dim myCommand As New SqlCommand("SELECT '" & TipoMovimento & "' as TipoMovimento, SaleTransactionDetails.ItemID, SaleTransactionDetails.Quantity*1000 As Quantidade, SaleTransactionDetails.TaxIncludedPrice*1000 as PVP, '" & DateTime.Now.ToString("yyyyMMdd") & "' as Data, '" & Narmazem & "' As Armazem FROm SaleTransactionDetails INNER JOIN Item ON SaleTransactionDetails.ItemID = Item.ItemID WHERE SaleTransactionDetails.DtAlt = '" & DateTime.Now.ToString("yyyy-MM-dd") & "' and item.familyid='40' or item.familyid='41' or item.familyid='42' or item.familyid='43' or item.familyid='44' or item.familyid='45' or item.familyid='46' or item.familyid ='47' or item.familyid='48' or item.familyid='16' or item.familyid = '60' or item.familyid = '49' ", myConnection)
	myConnection.Open()
	Dim myReader As SqlDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
	'query	
	Dim sb As New StringBuilder
	While myReader.Read()
		''Let's read line by line and Append it to our StringBuilder
		sb.AppendLine(
			   String.Format("{0};{1};{2};{3};{4};{5}",
					   myReader.Item("TipoMovimento"), myReader.Item("ItemID"), myReader.Item("Quantidade"), myReader.Item("PVP"), myReader.Item("data"), myReader.Item("Armazem")))
	End While
	''Now that we have all data in our StringBuilder, lets put into our file
	File.WriteAllText("" & Caminho & "" & DateTime.Now.ToString("yyyyMMdd") & "Export_Sage_PHC.txt", sb.ToString)
	AutoCloseMsgBox("Foi Exportado o ficheiro com sucesso", "InformaVendas", 4)
	'Enviar email com attach das vendas
	Dim SmtpServer As New SmtpClient()
	Dim mail As New MailMessage()

o programa corre sem problema nenhum mas parece que fica bloqueado em vez de a barra andar ali de um lado pro outro, isto era apenas para ficar visualmente bonito e nao parecer que o programa tava parado ja q tava la a progressbar

Edited by gastao
Link to post
Share on other sites

Não sei até que ponto esses processos "bloqueiam" o programa, mas não é surpreendente.

Mete esse processo a decorrer num BackgroundWorker, assim a thread principal não bloqueia.

Knowledge is free!

Link to post
Share on other sites

agora em portugues lol o que queres dizer com backgroundworker? nunca trab com isso.. consegues exempleficar me algo sff

e que sempre que faço uma progressbar parece que o programa tfica parado mas esta a correr em vez de a barrinha ficar ali a mastigar enquanto o programa corre apenas para ficar bonito ;)

Link to post
Share on other sites

Isso acontece porque o processo é contínuo e exige recursos. Um BackgroundWorker cria-te como que uma thread secundária onde o processo decorre, deixando a thread-mãe "em paz". Podes dar um report de evolução do processo de modo a que isso seja informado na thread-mãe com uma ProgressBar, por exemplo.

http://wiki.portugal-a-programar.pt/dev_net:vb.net:backgroundworkers

Knowledge is free!

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.