I have created a report on D: Drive and Database(MS-Access) is also in D: Drive.But When I have copied the programme in E: Drive, it is not working.
I think I need to make the connection through coding.
The progress bar you have to set the min and max value and call the increment method when you have made some progress. You can also set the value directly. So your problem is know how far along are you in loading your grid. I am guessing you probably don't know that. So the best you can probably do, is put a timer control which executes every second. When the timer method runs increment the progress bar and refresh the form with Application.DoEvents. So then you users will think some progress is being made.
i hav some huge amount of data loading into a grid...
Why? The user only has so much screen space...
so i want to show a progresbar which shows the % completed
This depends on where your code is spending all of it's time waiting. It 's waiting for a database query to return, there's nothing you can do to make a ProgressBar work. You need to use something that actually returns data in chunks in order for a ProgressBar to work. You can fill a DataSet object yourself using a DataReader, like this example[^], but this method is slower and will take longer to build your DataSet.
Another version of a ProgressBar doesn't really show progress. Instead, it just shows something is going on, kind of like the Windows XP installation "little green boxes" that march along during the install. They don't show actual progress, just something that's moving to show that the machine hasn't locked up. You can find an example of this here[^].
Dave Kreskowiak Microsoft MVP
Visual Developer - Visual Basic 2006, 2007
I'm trying to use GDI to make a bitmap from a variety of other bitmaps. I'm new to vb2005 from vb6, and I've figured out how to bitblt from one hDC to another, and get the resulting graphics to appear.
What I want to know is how to display a transparent bitmap, based on an alpha channel. I can use an alpha mask, but this doesn't seem to work for shades of grey. I keep seeing code snippets that set a global transparency for your image to be used, but I need transparency per pixel, and at least 255 shades so that it blends or completely covers the bitmap underneath. I'm going to be using multiple images that overlay to make a final image. I'm fine with the graphics side of it, I know how to make alpha layers for PNG's etc and how they work. I just can't code it in.
This code is not complete - it's been cut out to show the basic method I'm using. I'm copying a variety of graphics into a 'master graphic', then stretching that result into the size I require on my form (so it will cope at any resized form)
HDC4 is a small graphic to paste into HDC3 (my 'master image') - HDC4 is what I want to have transparency with
HDC5 is the stretched target
Dim PictSrc As New Bitmap(texture(1)) 'Picture that goes from file to memory<br />
Dim PictMem As Graphics = Graphics.FromImage(PictSrc)<br />
Dim HDC4 As IntPtr = PictMem.GetHdc<br />
BitBlt(HDC3, xpos, ypos, 100, 75, HDC4, 0, 0, &HEE0086)<br />
StretchBlt(HDC5, 0, 0, Ship_Systems_Graphic.Width, Ship_Systems_Graphic.Height, HDC3, 0, 0, 453, 192, &HCC0020)<br />
1) Can anyone help me with how to structure some code that if something has not happened in a certain time, the function will return 'False'. The example 'Test0' below must be bad because I am constantly sitting in a loop checking the Port Pin.
2) Is there a better way to use a Timer in 'Test1'?
3) Which routines should be at the Top of the code. Since the routine 'DoTests' is the main loop, I have put it at the top - then as the tests are called, so you find the routines further down in the code. It obviously works anyway around, but I have often noticed in other code examples that the main routine is at the bottom of all the code.
4) After the tests are done (Pass or fail, the routine 'DisplayError is called from the 'DoTests' routine. 'Display Error' in turn calls 'DoTests'. In other words they are constantly calling each other. Is this bad?
Any comments on how I can make this code better will be appreciated..
Private Sub DoTests()
If Not Test1() Then
If Not Test2() Then
DisplayError(10) 'All Tests Passed
'Loop until Jig Closes (D0 = 0) to start tests
Private Function Test0() As Boolean
Do While LPTPort.GetState(D0) = 1
Private Function Test1() As Boolean
Dim tmrTestTimeout As Windows.Forms.Timer
tmrTestTimeout.Interval = 3000
tmrTestTimeout.Enabled = True
'Wait for LPTPort pin D1 to go low OR timeout
Do While tmrTestTimeout.Enabled
If LPTPort.GetState(D1) = 0 Then
tmrTestTimeout.Enabled = False
'Timed out - so Return False
tmrTestTimeout.Enabled = False
Private Sub DisplayError(ByVal intErrorCode As Integer)
Select Case (intErrorCode)
Me.lblTestStatus.Text = "Test 1 Failed"
Me.lblTestStatus.Text = "Test 2 Failed"
Me.lblTestStatus.Text = "All Tests Passed"
Me.lblTestStatus.Text = "Unknown Error - Test Aborted"
'Wait for Jig to open (D0 = 0) so last unit tested is removed
Do While LPTPort.GetState(D0) = 1
I think it is a much better idea to have an actual counter in the loop and only wait a max amount of time. It also is a good idea to Application.DoEvents while you are in a loop or your form won't refresh.
dim cnt as Integer = 0
Do While (Your normal check here) AndAlso cnt < 100000
'do your other code here
cnt = cnt + 1
If cnt >= 100000 Then
'didn't finish the test...
I would suggest that type of code over a timer. That way you know for sure that you will exit the loop and with the application.DoEvents it won't look like your application has died and isn't coming back.
I have a problem with changing printer's paper size to custom paper size(programmatically).
I use PaperSize cunstuctor to create custom paper size and then assign it to PrintDocument.DefaultPageSettings.PaperSize.
this is not change paper size in printer.
Dim pd As PrintDocument = New PrintDocument<br />
Dim pkCustomSize1 As New PaperSize("Custom", 100, 200)<br />
pd.DefaultPageSettings.PaperSize = pkCustomSize1
yes you must position your text to the newly set papersize. and it will print correctly
initialise your variables in beginprint event because this will be called first when you call printdocument.print method. set a variable to calculate the current height and check it with the pagesettings.printablearea.height and the current printing hight should not exeed this printarea height. if you have more to print then set the hasmorepages = true or when you need to finish set it to false.
the printpage event is repeatedly called when you set hasmorepages = true Note:Track your current printing position and it should not exeed the paper's limit, if the limit crossed then you will get a infinite number of pages printed.
Vilsad P P
MCTS (Windows Applications) .Net 2.0 Never bring a sword to a gun fight
1) Someone told me a function should have only one exit point - why is this?
2) Is it bad practice to use the input to the function directly. In example below, I compare intInput to a constant (10). Should I first equate intInput to a local variable and then use a local variable in the comparison. Just seems like extra code to use anothe variable?
3) As opposed to using 'Return True' or 'Return False' is it better to
use the function name - E.g. 'Test = False'
Private Function Test(byVal intInput as Integer) as Boolean
If intInput >10 then
Answer to question 1 : i'm not sure of it.
Answer to question 2 : its a good practise, if u use a temporary variable
inside functions. this keeps the original value safe and secure. dont hesitate to write some more code for this, bcoz its usefull when it comes to large programs..
Answer to question 3 : there are no difference between these two, but it is good to use 'Test = False', becoz thats the correct syntax while writing a function. still it is not mandatory. the code will work...
Last Visit: 31-Dec-99 18:00 Last Update: 24-Jun-21 6:42