• 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

    • Look around you, everybody is making fun of Linux, even the author of this article, my comment about Linux users being dilusional is absolutely true and you've proved it by pulling that "90% of Windows users hate it" out of your ass, if you can't handle jokes and actual facts maybe stay off the internet and go recompile your kernel or something.
    • ChatGPT memory upgrade extends to Free users by Pradeep Viswanathan Back in April, OpenAI announced a major upgrade to ChatGPT’s memory feature. The improved memory allowed ChatGPT to reference a user’s past chats to provide more personalized, relevant, and useful responses. Until today, this enhanced memory was available only to ChatGPT Plus and Pro users. Today, OpenAI announced that this memory upgrade is now rolling out to all logged-in ChatGPT Free users. This is big news, as it will impact the ChatGPT experience for hundreds of millions of users. For example, if a user previously mentioned liking Indian food, ChatGPT may remember that and suggest Indian dishes the next time the user asks, “What should I have for lunch?” However, OpenAI is not rolling out the same full-featured memory offered to paid users. Instead, Free users will receive a lightweight version that provides short-term continuity across conversations. ChatGPT Plus and Pro users will continue to benefit from longer-term memory and a deeper understanding of their preferences. To enable this memory feature, ChatGPT Free users in the EEA (EU + UK), Switzerland, Norway, Iceland, or Liechtenstein can go to Settings > Personalization > Memory > Reference chat history and turn it on. OpenAI will also present a prompt to enable this setting. All ChatGPT Free users outside the above regions will have memory enabled by default. Depending on their preferences, users can manage memory using these two settings: Reference saved memories: Details you’ve explicitly asked ChatGPT to remember, such as your name, favorite color, or dietary preferences. Reference chat history: ChatGPT can use information from your previous chats to make future conversations more helpful. While the capabilities differ between the free and paid tiers, this latest improvement to ChatGPT will deliver responses that feel more relevant and personalized for millions of users.
    • Actually there is rules about trolling here on Neowin. Thanks for playing but we are done here.
    • Do you know the difference between "crying over" and "making fun of"?
  • Recent Achievements

    • Week One Done
      jrromero17 earned a badge
      Week One Done
    • One Month Later
      jrromero17 earned a badge
      One Month Later
    • Conversation Starter
      johnwin1 earned a badge
      Conversation Starter
    • One Month Later
      Marwin earned a badge
      One Month Later
    • One Year In
      fred8615 earned a badge
      One Year In
  • Popular Contributors

    1. 1
      +primortal
      242
    2. 2
      snowy owl
      156
    3. 3
      ATLien_0
      144
    4. 4
      +FloatingFatMan
      138
    5. 5
      Xenon
      133
  • Tell a friend

    Love Neowin? Tell a friend!