|
This doesn't work. I thought declaring a variable as public in a class made it global.
Public Class Form1
...
Public i as integer
Private Sub Form1_Load(...
i = 1
End Sub
End Class
Public Class Form2
...
Private Sub Form2_Load(...
Dim j As Integer
j = i compiler says i is undefined
End Sub
End Class
|
|
|
|
|
well, i and j are in different classes so they cannot see each other.
now, if your instance of Form1 is global, then you can access i through it like this.
Global instance of Form1:
Public MyForm1 as Form1
Access instance of Form1 in class Form2:
Public Class Form2<br />
...<br />
Private Sub Form2_Load(...<br />
Dim j As Integer<br />
j = MyForm1.i<br />
End Sub<br />
End Class
Daniel E. Blanchard
|
|
|
|
|
Yeah, but the VB doc says
"The Public keyword in the Dim statement declares elements to be accessible from anywhere within the same project, from other projects that reference the project, and from an assembly built from the project."
|
|
|
|
|
David Williams wrote:
The Public keyword in the Dim statement declares elements to be accessible from anywhere within the same project
That's true if the element is global, but you forgot about how scope works. An element declared within a class is not global, but if declared as public can be accessed outside of the class. In order to do that you must reference the class.
For example:
You have a global variable declared in your project:
Public Var1 As Integer 'Global, accessable anywhere in the program
Then you have a class that can use that variable:
Public Class TestClass1<br />
<br />
Public Var2 As Integer 'Accessable from outside the class<br />
Private Var3 As Integer 'Accessable only in the class<br />
<br />
Public Sub MyProc()<br />
Dim Var4 As Integer 'Accessable only in this method<br />
Var4 = Var3 'This is OK because Var3 can be accessed anywhere in the class<br />
End Sub<br />
<br />
Private Sub MyProc2() <br />
Dim Var5 As Integer 'Accessable only in this method<br />
Var5 = Var1 'This is OK because Var1 can be accessed from anywhere.<br />
End Sub<br />
<br />
End Class
If you have a global instance of that class:
Public TestClassObj as TestClass1
Then you can access public data inside that class:
Public Class TestClass2<br />
<br />
Private Var6 As Integer<br />
<br />
Public Sub DoSomething()<br />
Var6 = TestClass1Obj.Var2 'This is OK because TestClass2 has indentified where Var2 can be found<br />
End Sub<br />
<br />
End Class
So, the VB doc you mentioned was correct, but you have be carefull where you declare your elements and always mind program scope.
Daniel E. Blanchard
|
|
|
|
|
Can I create dll using VB as in VC++?
|
|
|
|
|
VB6 can not create DLLs that export functions like C++ can. It can only create COM DLLs.
Paul Watson wrote:
"At the end of the day it is what you produce that counts, not how many doctorates you have on the wall."
George Carlin wrote:
"Don't sweat the petty things, and don't pet the sweaty things."
Unknown wrote:
"I love long walks, especialy taken by those that annoy me."
Paraphrased from TMNT:
"Cricket? You have to know what a crumpet is to understand Cricket."
|
|
|
|
|
I have an app which has an intensive process kicked off from a button. During the process the Screen.Mousepointer property is set to vbHourglass and then at the end back to vbNormal. This works fine. However, if I have un-saved changes then a dialog is displayed prior to kicking off the intensive process and prompts the user to save or not etc, when the dialog closes the process kicks off BUT the Mousepointer property although being set to vbHourglass after the dialog has been closed doesn't change the Mousepointer visualy from vbNormal. I have DoEvents after the Screen.Mousepointer = vbHourglass.
Can anyone PLEASE let me know what is going wrong and how I can overcome this problem, it is driving me mad!
|
|
|
|
|
In VB 6, as I recall, you could print an entire project with one Studio command, set the header, etc. Now, do I have to print each file and class seperately? Can't I customize the header, at least?
|
|
|
|
|
Is there a way of creating Activex controls (similar to the windows user control in VB 6.0) in VB.Net. I want to use such a control in Web forms or HTML page.
Currently I am able to use an Activex control (windows user control) created with VB 6.0 in ASP.Net web form. Similarly I created a Windows user control in VB.Net and when I added the control in ASP.Net application's tool box using 'customize tool box' option the control shows up, but is greyed out.
|
|
|
|
|
Is there any way of using a dll file in VB if there is no documentation for the dll file.
Please help
Sudar
|
|
|
|
|
Hello everyone,
I am a newbie and I am hoping that you all can help me with a little trouble I am having. I have a VB.NET CRM application that I am writing for my company. I am using a MySQL database to hold all of the data. The app is a windows form application which will be installed on everyone's computer in the office. I need to be able to authenticate the user from a list of users in a db table (which I can do no problem) but I am getting stuck on how I can keep the user's logged in status so that I can record (in another database table) the actions they perform in the system.
I appreciate any and all help and advice that you can give me on how to do this. Have a great day.
Sincerely,
Robert W. Dempsey
|
|
|
|
|
hey i dont know if your still having the problem with keeping track of a user's logged in status but a simple way would be to create a loggedin field on the end of the user's record and when they login set that field equal to 1 and when they log out set it to 0
|
|
|
|
|
I'm relatively new to VB programming and I have written an Access 2000 application and am currently copying the Access mdb's for each different database. My users have as many as 3 or 4 databases each. This is a nightmare if I have to make a code, form, or data structure change. What would you suggest as an alternative? I am trying to create a VB application that would allow them to select what Access database they want to work with and process from there. Sort of like selecting the database to open from a Common Dialog.
Any suggestions for a quick and efficient method would be appreciated.
|
|
|
|
|
Well, if you're using ADO.NET, then all you have to do is change the connection string in your OleDBConnection object. Just let the user select whichever one they want, modify your connection string, and assumining that your databases are all the same that should be all you need to do.
Hope that helps!
Daniel E. Blanchard
|
|
|
|
|
Each user is on a standalone laptop or desktop. All databases are identical in structure. No .NET. I change the ODBC DSN when they run reports that I have created in Crystal Reports. Other than that they open the .mdb they want to update and then run the reports. No networking or servers are involved.
|
|
|
|
|
I am relatively new to VB and I'm trying to figure out how to reference the images in an imagelist by using the index of the image within the list. I want to be able to take an image from the imagelist and place it in a picture box by using the index. I cannot figure out the syntax for this code.
DGW
|
|
|
|
|
Should look like this:
MyPictureBox.Image = MyImageList.Images.Item(Index)
Hope that helps!!
Daniel E. Blanchard
|
|
|
|
|
Thanks much - that works. The images are a bit blurry but they are at least showing up now.
DGW
|
|
|
|
|
How can I translate de following VB function ?
Function DateToNumber(dOrig as Date) as Long
Dim HDate as date
HDate = DateSerial(1900,1,1) + TimeSerial(0,0,0)
DateToNumber = Abs(DateDiff("d",HDate,dOrig))
End Function
Regards,
Marcelo
|
|
|
|
|
IN Visual Basic 6?
Thanks
JW
DJ
|
|
|
|
|
Hi
try TerminateProcess API function
BOOL TerminateProcess(HANDLE hProcess,UINT uExitCode)
|
|
|
|
|
You'll need the ToolHelp32 or PSAPI files depending on which OS you want to support. There are a variety of functions in those that allow you to list processes, terminate processes, etc.
|
|
|
|
|
|
You'll have to download PSAPI:
http://www.microsoft.com/downloads/details.aspx?FamilyID=3d1fbaed-d122-45cf-9d46-1cae384097ac&DisplayLang=en
There is function in there which lists processes. If I remember correctly, I think it uses a callback, but that may only be for 16-bit processes. There is also a function that will allow you to terminate a process. You'll have to put the dll on your target machine and declare the functions in your vb code.
|
|
|
|
|
Yopu might try posting a wm_close message to it's main window first - this will allow it to do any proper cleanup like closing files etc. Ideally you should only terminate a process using Terminateprocess if it has hung...IMHO.
'--8<------------------------
Ex Datis:
Duncan Jones
Merrion Computing Ltd
|
|
|
|