|
Yes, reading the items directly would be fine. How do you do that? I can define the record and while trapped in the debugger I can see the information but it is of type ListViewSubItemCollection^ and the compiler will not let me define one. Here is the code.
ListViewItem^ myRecord = gcnew ListViewItem();
myRecord = this->myListView->Items[0];
ListViewSubItemCollection^ myCollection = myRecord->SubItems::get(); // It won't let me define this collection.
If I trap after assigning Items[0] to myRecord I can go to either the Autos or Locals tab and expand myRecord and I can see subItems collection with the data or expand the SubItems and I can see the subItems collection. I just need the correct syntax to read the data from the ListView.
Buck
|
|
|
|
|
Get is a "getter" method for a property. You don't call it directly.
Does this work?
ListViewSubItemCollection^ myCollection = myRecord->SubItems;
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Hi Mark,
No, if I try to define like that the compiler complains that ListViewSubItemCollection^ is not defined (the namespace System::Collections is defined). I get the same error if I try to define a ListViewItemCollection^ or if I try to use gcnew with them.
Yeah, I usually don't call ::get(). I will type it out that way so that I can see through the intellisense what type the get() function is going to return and then I can define an appropriate variable.
If you ever find out of a way to declare a ListViewItemCollection^ or ListViewSubItemCollection^ email me if you can.
Thanks,
Buck
|
|
|
|
|
See my code in my most recent post - I tested it, it works fine.
The compiler will always complain if it doesn't know the type.
The "ListViewItem::ListViewSubItemCollection" class is not in "System::Collections".
It's in System::Windows::Forms.
"ListViewSubItemCollection" is a subclass nested class in the "ListViewItem" class.
The fully qualified type is "System::Windows::Forms::ListViewItem::ListViewSubItemCollection"
Of course, if you have "using System::Windows::Forms;" somewhere above, you can shorten the type to
"ListViewItem::ListViewSubItemCollection".
Make sense?
Mark
Last modified: 22mins after originally posted --
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Yeah it makes sense, but I didn't know that ListViewItemCollection was of type ListViewItem. Just not intuitively obvious when writing code.
Buck
|
|
|
|
|
I've got it now.
String^ field_1;
String^ field_2;
String^ field_3;
for each(ListViewItem^ record in myListView->Items)
{
field_1 = record->SubItem[0]->Text;
field_2 = record->SubItem[1]->Text;
field_3 = record->SubItem[2]->Text;
}
I had to figure this one out on my own. Any example I found on the web did not work for me. I'm amazed that reading from a ListView was not covered in Stephen Frasers book on C++/CLI which is very in depth.
I could not find any example of this in the Microsoft documentation either. I guess we're supposed to know this though some kind of mental osmossis.
Thanks,
Buck
|
|
|
|
|
That's fine. You can also do this, like you were trying to do before...
ListViewItem^ myRecord = this->listView1->Items[0];
System::Windows::Forms::ListViewItem::ListViewSubItemCollection^myCollection = myRecord->SubItems;
String ^field_1 = myCollection[0]->Text;
String ^field_2 = myCollection[1]->Text;
String ^field_3 = myCollection[2]->Text;
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Thanks Mark,
I hate those kind of full namespace declarations. I really don't understand why sometimes you have to include the entire namespace name even though the namespace has already been defined with the 'using' keyword. It wouldn't be so bad if there was a list of types that require the full "path" for lack of a better word.
Buck
|
|
|
|
|
BuckBrown wrote: I really don't understand why sometimes you have to include the entire namespace
You don't, if you use "using"...
using namespace System::Windows::Forms;
...
ListViewItem^ myRecord = this->listView1->Items[0];
ListViewItem::ListViewSubItemCollection^myCollection = myRecord->SubItems;
String ^field_1 = myCollection[0]->Text;
...
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
This is a good example of how to determine if I need to include the preceding ListViewItem:: (or any other preceding datatype: . I have run into declaration problems like this before but those first two lines after the ellipsis are illustrative of the approach. I am printing that one for my notes.
Buck
|
|
|
|
|
I didn't state that correctly, and I modified my post above...
ListViewSubItemCollection is a subclass nested class in the ListViewItem class.
It's the same thing you'd have to do with regular C++... the compiler has to
know the class and the namespace
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Hi, I'm using C++/CLI and Visual Studio 2005. I have a list view control that I would like to have the columns center justified. I can center justify all the columns except the first column. The GUI designer will not change from left to center justified and if I hard code the justification it still will not do it. Is this a subtle bug? Why won't the first column center justify?
Thanks
Buck
|
|
|
|
|
Hi to everybody..
i want to this book ...is there any url is there for downloading this book .plz ...
The MFC Answer Book: Solutions for Effective Visual C++ Applications by Eugene Kain
*****THANKS N ADVANCE****
Mathen.K
(I WILL TRY MY LEVEL BEST )
|
|
|
|
|
Here's a thought. Don't steal. Buy the book.
Another thought - that book is not about managed C++. Perhaps as well as being a thief, you're too dumb to read this book anyhow ?
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
Christian Graus wrote: Here's a thought. Don't steal. Buy the book.
Another thought - that book is not about managed C++. Perhaps as well as being a thief, you're too dumb to read this book anyhow ?
"Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon
|
|
|
|
|
What is the translation of this code from C# to C++ ??
public
String A
{
get
{
return a;
}
}
public
String B
{
get
{
return b;
}
}
Thank you...
modified on Wednesday, February 20, 2008 8:21 AM
|
|
|
|
|
|
Sorry, can you look to the code again ? It's C# (I pasted the wrong one which i tried to translate)
Replace
public with public :
and
String with String^ ?
I got errors for "get"...
|
|
|
|
|
|
Thank you very much
|
|
|
|
|
Hi,
I have 2 forms (Form A, Form B). One of them is Parent(Form A), the other one is Child(Form B). Child form has textboxes which users can input smtg. I want to transfer data from Child Form's textboxes to Parent form textboxes. How can i do this ?
I found some articles about Delegates but all in C#, i tried to convert them in VC ++ but everytime i had some errors. I tried to declare a delegate in Form A like:
public ref class Randevu2 : public System::Windows::Forms::Form
{
public:
R2(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
public delegate void DelDeneme(String^ s1, String^ s2);
But everytime i had errors. Can any one suggest something or tell me that where i declare delegates?
|
|
|
|
|
Badboy22TR wrote: I want to transfer data from Child Form's textboxes to Parent form textboxes. How can i do this ?
One approach is you can learn about Design and Patterns like Model-View-Controller.
Another approach that most people around here do is expose the controls as public properties and just set/get the data from one to the other whenever you like, that way they are tightly coupled so that when you want to change something later it's a big mess.
Badboy22TR wrote: Can any one suggest something or tell me that where i declare delegates?
Have you looked at the C++/CLI Beginner articles here on code project? They are highly recommended.
led mike
|
|
|
|
|
MVC to pass data between forms??? you will never understand this....
|
|
|
|
|
|
Hi guys,
I want to make an array that consists of system defined colors. I wrote the code
System::Drawing::Color Color1[]={Color::Black, Color::Brown, Color::Red};
what delivered the error
'System::Drawing::Color' : a native array cannot contain this managed type
Then I tried this version
Color Color1[] = __gc new Color[];
and I got this error
error C2440: 'initializing' : cannot convert from 'System::Drawing::Color ^' to 'System::Drawing::Color'
Has anyone an idea how to make this work?
Thanks and best wishes
|
|
|
|