|
Anonymous wrote:
I really would like the parameter passed into the constructor to be passed by reference. I tried to make the example simple, but some background might be required to see why I wish to do it this way. Basically, the class is a dialog box, and I want to construct it, binding some of its values to some variables, then show the dialog,
Can't be done using ByRef in the constructor. When the constructor sub returns the variable references are popped off the stack and lost. The references only exist so long as the function that was called is still executing. The moment the function returns, the references are lost.
What you want to do, or I should say how you want to do it, would require FAR more code than it's worth. Even using databinding, you would have to bind each of your variables to their respective fields on the dialog form.
The best method is to do exactly what you don't want to do ... pull each variable off individually. You'll be doing it no matter what, either way you go...
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Actually, there is a method to do it using ByRef, but it's not flexible. You must pass all of your variables in AND use the same number of parameters. But...
In your dialog class, you would create a Sub that takes parameters for all of the fields you want to return from your form. This Sub would call ShowDialog on itself. When the user clicks OK, the Sub would then pull off all the fields and assign them, one by one, to the parameters passed in. So if you want to pull off the values of 15 fields when the user clicks OK, your function would look something like this:.
Public Sub MyShowDialog(ByRef field1 As String, ByRef field2 As String, ByRef field3 As Integer, ... )
If Me.ShowDialog() = DialogResult.OK Then ' This is a blocking call so nothing will execute until this returns
field1 = WhateverControl.Text()
field2 = WhateverOtherControl1.Text()
field3 = WhateverOtherControl2.Text()
...
...
End If
End Sub
Now, when you call the MyShowDialog from your other form:
Dim myData1 As String
Dim myData2 As String
Dim myData3 As Integer
...
...
myDialog.MyShowDialog( myData1, myData2, myData3, ... )
' Now all your variable have their values...
Remember this though, I said it's possible, to do it this way. It is NOT the best way to pull values off of a form.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Thank you!
Between your last reply and this, I have a much better understanding of what is going on than before, which is what I was really going for. I had already went ahead and resorted to pulling the values out of the form one by one prior to posting, in order to get it to work correctly, but I was confused as to why it hadn't worked as expected.
Knowing that the reference goes out of scope when the called method ends is good to know, and will most likely save me some headaches later, so again, many thanks.
For curiosity, why do you discourage the work around you provided in this last post, in favor of the other method? This seems to encapsulate the functionality pretty neatly, assuming you are posting a dialog to retrieve relatively few parameter values and the number of those parameters isn't changing.
I'm learning all the time, thanks for helping me along the way.
|
|
|
|
|
Most of the time, you're not pulling just a few parameters. It would work for something like a login dialog, but not for an Options/Settings dialog where there could be MANY options. It's also not flexible. If you put up the dialog for two different operations, say one situation where you needed 15 fields returned, and the other where you needed, say 10. You'd have to write two different MyShowDialog functions with the different parameter lists. I'm all for overloading functions, but that makes the dialog less useful because the dialog class now has to know everything about the situations in which it is used and that's just not good practice in an Object Oriented world.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
This is somewhat tricky so you be watchful with any changes that could occur.You might expect that since this is passed by reference any changes you made to the passed variable would reflect in the instanciated class.
|
|
|
|
|
Is there anyone know how to code the button column in datagrid?
I have the example from: http://www.syncfusion.com/faq/winforms/search/888.asp
The button column in this example that is what I want to do. But when I try to use their code into my application, then it gets errors. And I very don't know how to fix it in my code. I don't have any experience of the drawbutton and drawImage. PLS HELP!!!
Thanks!
--If you can give someone a hand, that would make your day more wonderful...^_^_^..--
-------------How Wonderful Life IS!------------------
-----------------------Lisa--------------------------
|
|
|
|
|
Does anyone know of a good book that identifies Win32 API calls that can be used from Visual Basic, including an Introduction to their use etc...
|
|
|
|
|
MSDN is still the best Win32 reference going. Most if not all Win32 API functions can be called from Visual Basic.
Win32 is pretty big. It would be easier to know which area you want the books to cover.
Michael
CP Blog [^]
|
|
|
|
|
|
You might want to try API List[^]
The list is not exhaustive, but it's quite good.
"if you vote me down, I shall become more powerful than you can possibly imagine" - Michael P. Butler.
|
|
|
|
|
I'm using some buttons in an application which uses the mouse enter and mouse leave functions to change the imageIndex selected from an image list. The snag is on the buttons that change between forms I'm simply getting :
Private Sub BtnX_Click yadda yadda (BtnX is on FormA)
FormA.Hide()
FormB.Show()
End Sub
Since the Mouse enter event has changed the button image to it's "hover" image, and there is no mouse leave event because the form has instantly vanished when the button is clicked, the image remains hung on it's mouse enter image setting thereafter.
How does one re-set the mouse leave setting.
I've tried simply changing the image back and numerous other tweaks but the problem seems to be that the mouse enter function sets something somewhere and the only known cure is to use the mouse leave function.
RWWB in the UK or Canada
|
|
|
|
|
off the top of my head, one gritty way to achieve this is to handle the activated event and have all image indexes reset appropriately. you could do this in each of your forms.
hope this helps.
-jim
|
|
|
|
|
Hello all,
The point is:
that i want to use .dll that implement from visual c++ to work with my visual basic 6 application but i don't know how to do it.
so i want to know..
1.How can i know the function and classes in the .dll file ?
2.How can i make visual basic 6 use that .dll ?
3.Could you introduce me to some books or websites on how to use .dll with Visual Basic 6?
please ,help me. It's about my senior project.
Thanks for your help.
|
|
|
|
|
Is the DLL a regular DLL or a COM DLL?
If its a regular DLL, have a read of this[^]
Michael
CP Blog [^]
|
|
|
|
|
What you ask is not so straight forward. It really depends on the type of .DLL your trying to use (C++ function library or a COM .DLL). Also, you'll need some kind of documentation on the .DLL. Otherwise, you'll have a very difficult time using it. You'll be able to see the function names using the Depends utility that comes with Visual Studio 6, but you can't see the return types or the parameters for each function. There is no way to determine that just by looking at the .DLL exports. You NEED the documentation on it...
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
hi, anybody know the visual basic coding for the communication with the I2C adapter, inculding the read and write command. It are using USB to communicate with the I2C. Anyone can give advice? thanks.
|
|
|
|
|
You would have much better luck on Google. I tried "I2C VB" and came up with an OCX Control that might work for you.
Without any documentation on the workings of the adapter, you'll find the job of communicating with the adapter through it's drivers impossible.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Thanks for your information. The suggestion given by you is for the parallel port. But my communication is using USB to connect the I2C Adapter. So can you give me some information about this? Thanks.
|
|
|
|
|
Now you have mo choice but to go through the adapters driver. WIthout the docs on the drivers exposed API, you'll find this impossible. You might want to check this[^] out for docs and stuff.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Is there any way to acces printpreview image and convert it to jpeg
file in MS Word?
Shin
|
|
|
|
|
It's going to be a big PITA to do. There is no one call you can make you get an image from the screen. This will require in-depth knowledge of Windows and the Win32 API.
You'll have to write code to find the instance of Word you want, find the window for the print preview image (not the print preview dialog!), get a handle to that window, convert that handle to a Graphics object (assuming VB.NET here, VB6 - forget it), use the Graphics object to save the image in JPEG format, then release your objects and handles.
Do I have any example code? NO! You can Google for pieces of this process, but you more than likely won't find an app written for you.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Is there no way to make list Views bahave to like list boxes in allowing an object to be inserted, and then having the overrided toString() method output the text that is to be displayed in the list. I can't get it to work, and I can't find anything written on it, so I just want to check.
Thanks for the help.
|
|
|
|
|
instead I just inserted all the required data into the list view and set the widths to zero. I am not sure if this is the best way or not, but it works.
|
|
|
|
|
I want to take tabular data from a source that has no .NET provider.
So I want to create a custom datasource for my datagrid,
which will read the data from the source and feed it to the grid.
I have not seen any examples on how to do this.
I won’t know the data elements (column names) in advance, so I **can’t hard code anything**.
The columns, properties, attributes or whatever that the grid is binding to will have to be built at runtime.
If you take the custom data set examples available on the web, you would have to create a new custom datasource object for each "query", because the examples bind the datagrid to properties on a specific object!
Now, the DataAdapter object will fill a DataSet, and I made a custom DataAdapter for my source to do just that.
But it's too slow, doing twice as much work. The data is read into the DataSet, and then into the DataGrid.
I need it to go straight into the grid from the source. It's a speed requirment.
So, to distill this into it's simplist terms, I need something like this (not necessarily this) (forgive syntax errors):
Dim MyDataSource as New MyDataSource()
MyDataSource.Add("Name",New String(){"Jim","Bill","Joe"})
MyDataSource.Add("ID",New String(){"221","321","442"})
MyDataSource.Add("Rank",New String(){"1","3","2"})
grdDataGrid.DataSource = MyDataSource
The result is a grid populated with three columns - Name, ID and Rank, having 3 rows, one for each person.
Actually, the DataGrid will interrogate the datasource for each new row of data, but the columns don't come from properties or attributes, they need to come from items in a collection.
If I can learn how to do that, I can do anything with data binding.
If the solution is Reflection.Emit, I'm fine with that; I was hoping for a more direct way.
Thanks,
Todd
|
|
|
|
|
I have 3 forms in my project, each form has 3 button to call each form.
the main form is form1, when button2 click, I used form2.show, and form1.hide, form3.hide..
my problem is: when I close form2 (that close the project), my form1.exe is still running. how do I code .exe to close when I close the project?
is there someone know how to fix this problem?
Thanks!
-Lisa
|
|
|
|
|