• 0

[VB6] Browse Button (Common Dialog) Error


Question

I'm trying to make a Browse Button in my VB6 project so that a window pops up asking people to find a pic on their computer, which will then be loaded into a picture box and resized. I got the resizing part working but the problem I'm running into is this: when I run my program, hit the Browse Button, select an image from my Pictures folder in My Docs, and click ok, it makes my program think it's in the "Pictures" folder and everything fails at the same time.

Here's my code:

CommonDialog1.ShowOpen

'The following lines just let me know that I now have a file patch to work with so I can load the picture with the picturebox

If IsNull(CommonDialog1.FileName) Then 
Else
	MsgBox "File selected is " & CommonDialog1.FileName
End If

The program seems to run great the first time, with the message "File selected is (actual_filename_and_path)" displayed after I choose a file, and gets no errors, but as soon as I shut it off and run it again, all the databases that I have in the same folder as the program (MS Access Databases) start complaining that they aren't found and the pictures in the relative path of \pics\*.jpg of my program also can't be found. I copied one of the databases (an .mdb file) from the program's folder where it's supposed to be to the "Pictures" folder in my Docs (The folder that I chose the image in while working with my browse button) and it found the database. Even in development mode (not in runtime) the properties box doesn't recognize a database in the same folder as the program anymore unless I put the file into the "Pictures" folder. Why does the program think it's in whatever folder I choose with the browse button and how do I fix this? My only way to get my program running again is to use an older version of the program that I have saved in a different folder that doesn't have a browse button (it's a very recent version so I didn't loose any of my work).

Actually, if I close VB and don't save, I can open the project up again and it will run without the Browse Button just fine. I had to revert to an earlier project once because to test what would happen, I changed the code to what I mentioned above and saved to see what would happen. It ran once, failed the second time, and when I closed and reopened VB it wouldn't run anymore...

Edited by HellSpawn

7 answers to this question

Recommended Posts

  • 0

Browsing from the CommonDialog causes the working path to be reset to where the user browsed to. If you are not specifying a path to your databases and pictures and you are just assuming that it is relative to you application then these are being loaded with the working path. This working path is persisted over separate runs of the application so closing it and reopening won't necessarily fix your problem.

You need to change the code to find where the application is located and append onto that the locations of your relative databases and pictures instead of inadvertently using the working path.

  • 0
  ultraviolet7 said:
Browsing from the CommonDialog causes the working path to be reset to where the user browsed to. If you are not specifying a path to your databases and pictures and you are just assuming that it is relative to you application then these are being loaded with the working path. This working path is persisted over separate runs of the application so closing it and reopening won't necessarily fix your problem.

You need to change the code to find where the application is located and append onto that the locations of your relative databases and pictures instead of inadvertently using the working path.

Also .. you could try storing the CWD in a special variable when launching the app.

But still .. try and avoid working with the CWD for programming end as apps can run with different CWD's

  • 0

Thanks for the hints guys. Now at least I know what to look for.

  ultraviolet7 said:
You need to change the code to find where the application is located and append onto that the locations of your relative databases and pictures instead of inadvertently using the working path.

Sounds interesting. Do you know the code to find out what directory your program is in?

  MMaster23 said:
Also .. you could try storing the CWD in a special variable when launching the app.

But still .. try and avoid working with the CWD for programming end as apps can run with different CWD's

Since when the program launches, it's location is the same as the Current Working Directory, how would I write down this variable?

As a guess I tried

Dim a as String
a = CWD
MsgBox a

but that didn't work... What's the actual code?

  • 0
  Abaiko said:
Use this:

Picture1.Picture = LoadPicture(App.Path & "\" & "smiley.jpg")

Just found out about App.Path yesterday while searching the net, but couldn't think of a good way to use it, this helps a lot. Thanks.

It looks like the browse button is finally working :)

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • For anyone looking for a lightweight formatting-free text editor, I recommend Notepad3.
    • This looks really dumb, especially if it costs $100+. Noone who cares about using a flight yoke would touch that thing, people who don't care are probably fine using the analog sticks on their controller, so who is it for?
    • A) "they shouldn't be making money off of those [free videos]"?? That is literally their business model, making money off videos that users post...if you don't feel like that should be allowed, then are you saying YouTube shouldn't exist. B) Yes, the example I gave is a net-negative transaction. If YouTube makes money from others who are following their rules, it doesn't change the fact that the person using an ad-blocker is costing them money. C) YouTube has always operated at a loss...kind of invalidates your entire argument. As I always say, I don't care what you do, I will not even say you are wrong for doing it. That is purely your choice. Just be honest enough to say something like "Google is rich, I honestly don't care." Perfectly fine reason. Don't act like there is some imagined justification for why it isn't breaking the rules.
    • You can now present content from your camera feed in Google Meet by David Uzondu Google has a new feature rolling out for Google Meet that lets you directly present video from an external camera feed right into your meetings. This means if you have a document camera for showing physical papers, a dedicated external camera for a better angle, or even output from a video production tool, you can now pipe that into Meet as a presentation source. This new option supports video up to 1080p at 30FPS. This "present from camera" function offers a more integrated way to handle certain video inputs compared to some existing workarounds. For instance, it might prove less complicated than a setup with OBS Studio where you arrange your various video sources into scenes, activate the virtual camera output, and then navigate Google Meet's settings to specifically choose "OBS Virtual Camera" as your video input before you can even start presenting that customized feed. Alongside this camera presentation feature, Google's announcement also mentioned several improvements to the general screen sharing experience in Meet. Initiating any type of screen share is faster now, and video quality during screen sharing has also been sharpened, with better handling of dynamic content like scrolling text or embedded videos. To reduce interruptions, if a second presenter stops sharing their screen, any previous presentation will now automatically resume. For those wondering when they can get their hands on this, the rollout for the camera presentation feature and these screen sharing enhancements has begun for Rapid Release domains. Users on Scheduled Release domains will start seeing it from June 11, 2025. Google notes that it could take up to 15 days for these features to be visible to all eligible users. Most Google Workspace accounts, including Business Standard and Plus, various Enterprise and Education tiers, and Workspace Individual subscribers, will have access. This new presentation option joins other recent Google Workspace enhancements. For instance, Gemini in Google Drive can now summarize changes to your files, offering a quick way to get updated on what you missed in documents since you last opened them.
  • Recent Achievements

    • First Post
      James courage Tabla earned a badge
      First Post
    • Reacting Well
      James courage Tabla earned a badge
      Reacting Well
    • Apprentice
      DarkShrunken went up a rank
      Apprentice
    • Dedicated
      CHUNWEI earned a badge
      Dedicated
    • Collaborator
      DarkShrunken earned a badge
      Collaborator
  • Popular Contributors

    1. 1
      +primortal
      382
    2. 2
      +FloatingFatMan
      177
    3. 3
      ATLien_0
      174
    4. 4
      snowy owl
      169
    5. 5
      Xenon
      134
  • Tell a friend

    Love Neowin? Tell a friend!