|
PropertyGrid? I do not understand how that will help? Can you elaborate with a simple class please.
|
|
|
|
|
CodingYoshi wrote: I do not understand how that will help?
Sorry, I have no idea how to help you understand things. I can provide information, but it is up to you gain the requisite knowledge to understand the information.
Getting the most out of the PropertyGrid[^]
led mike
|
|
|
|
|
I kind of like the idea of that a bit but you would really use that for something like, a customer data entry form instead of using a form that has individual controls on it?
Never though about it before bit maybe...
|
|
|
|
|
Ray Cassick wrote: instead of using a form that has individual controls on it?
Yes. Your other parts of the UI provide views and navigation mechanisms of the system. When the user selects something in the system that has multiple data points that can be edited you use the PropertyGrid.
led mike
|
|
|
|
|
led mike wrote: Littering windows with individual controls for each individual data point is what I call the Bug Splat User Interface technique.
led mike wrote: Prefer to use controls like PropertyGrid for data entry. They are both user friendly and coding friendly
Yes, and the OP will find there could be less complaints from the user, as well.
"The clue train passed his station without stopping." - John Simmons / outlaw programmer
"Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon
"Not only do you continue to babble nonsense, you can't even correctly remember the nonsense you babbled just minutes ago." - Rob Graham
|
|
|
|
|
CodingYoshi wrote: I can have a boolean variable (something like cleaningUp) set to true during hiding of the form. If this variable is set to true then it will exit the text changed event handler.
There's nothing wrong with this approach; I've had to use it myself.
The problem is with the design of the controls, in my opinion. The XXXChanged events do not in most (all?) cases distinquish between changes generated by the user and those generated programmically. As a result, your event handler can't tell the difference. So you wind up having to use a kludge like a boolean flag to indicate when the event is being raised in response to the user's action as opposed to being raised in response to a change made programmically.
|
|
|
|
|
Used to do it similar to what you mentioned, except I did not use XXChanged to repopulate back to the business object. It was messy.
Now I mainly use DataBinding. The controls are unbound before the save, then I just clear the controls according to the control type. At least the code is cleaner and more uniform now.
|
|
|
|
|
I need to create a VB.NET service to exchange files with an a PDA using Telnet protocl. The PDA sends/receives files from an AS/400, a Unix box and a Microsoft FTP server, but all of the "chat" examples I've found can not be used. I have the C code from the Unix application and I'd like to create methods in C++ that I can call from my VB.NET project.
Can anyone send me any examples?
TIA!
Mike
Greetings from Kalamazoo, MI
|
|
|
|
|
There are articles around here showing how to call C++ methods in VB.NET, you'll have to do a search on that
"The clue train passed his station without stopping." - John Simmons / outlaw programmer
"Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon
"Not only do you continue to babble nonsense, you can't even correctly remember the nonsense you babbled just minutes ago." - Rob Graham
|
|
|
|
|
Try Using a COM Object to Wrap around your C++ methods and libraries. so you can adapt it to other systems
JO
|
|
|
|
|
Hello,
I've a C function that take function ptr in argument:
double CFunc(
double (*funcptrA)(char *),
double (*funcptrB)(char *),
double (*funcptrC)(char *)
);
And I would like to transform it in a cool object design.
I've tried a lot of solutions (functor, interface) but the only way my compilator agree is to declare argument functions (funcptrABC) as static.
To illustrate, Here 's what i wrote first:
#include CFunc.h
class CplusFunc{
virtual double A(char*);
virtual double B(char*);
virtual double C(char*);
double CplusExec(){
retrun Cfunc(&A,&B,&C);
}
};
It doesn't work but give the semantic i would like to give to my object.
Have you got an idea?
|
|
|
|
|
mp3butcher wrote: but the only way my compilator agree
mp3butcher wrote: Have you got an idea?
Well if you are using VC++ 2008 there is the newly added support for TR1 including Polymorphic Function Objects[^]
led mike
|
|
|
|
|
I wrote portables applications for windows linux & mac then I search a portable technic that avoid the use of a microsoft specific one...But thanks for the idea
|
|
|
|
|
mp3butcher wrote: that avoid the use of a microsoft specific one
I don't know why I am bothering with this since you obviously don't actually READ the links I give you but TR1 is from the ISO C++ committee[^] and was published in 2005. So there might be any number of compilers that currently support some of it.
led mike
|
|
|
|
|
|
|
Excuse me for my fast answer, but I've seen this syntax in boost but I don't understand how to make it work:
MSVC2008 Compiler tells that member pointer functions,pointer function and boost::function haven't the same signature...
So, I can't pass to my c function otherthing than a static (member) pointer function
Can you, please, explain me further?
|
|
|
|
|
mp3butcher wrote: MSVC2008 Compiler tells that member pointer functions,pointer function and boost::function haven't the same signature
Well I don't know what you did since you posted no code. What I do know is that I successfully reproduced the concepts discussed in that article I linked to using MSVC2008
Also I am now confused as to what you are attempting to do. You originally seemed to be asking about design but in this last post you say:
mp3butcher wrote: So, I can't pass to my c function otherthing than a static (member) pointer function
Your C function is what it is. If you are asking what you can use to match the parameters of that function that's not even a design question.
If you are asking about design, I suggest you look at using interfaces rather than function pointers or functors or any of those new mechanisms.
"All other things being equal, the simplest solution is the best."
|
|
|
|
|
In fact my question has two linked aspects:
As I can't pass otherthing than a static member function to my cfunction( double (*g)(char*)):
1)I would like to know how I could make it a real parameter (not hardcoded) that belong to the caller of Cfunc.
2)I would like to know how I could make a cool cpp design permitting to overload the argument pointer function.
Then the design side of my question is the second aspect.
First I would like to parametrize my cfunction with member function belonging to the caller object...
If you see a manner to do it passing other thing that a static member function, I would be very glad.
PS: I think what i've done with the function<> template is not what you're thinking of:
class CPP{
double funcparam(char*);
void exec(){
function2<double> f=&CPP::funcparam;
CFUNC(f);
}
};
Silly isn't it?:(For this I think I haven't understand what to do...
the only way I've found to make it work is:
class CPP{
static double funcparam(char*);
void exec(){
CFUNC(&funcparam);
}
};
but it don't permit to overload funcparam...
|
|
|
|
|
mp3butcher wrote: First I would like to parametrize my cfunction with member function belonging to the caller object...
If you see a manner to do it passing other thing that a static member function, I would be very glad.
See the C++ FAQ[^]
mp3butcher wrote: 1)I would like to know how I could make it a real parameter (not hardcoded) that belong to the caller of Cfunc.
I'm not sure what that means but it might be an interface.
Learning Object Oriented Design cannot be done by asking questions and getting answers. You have to become a Student and study the subject by reading some of the mountains of information that is available on the subject. I strongly suggest that you do just that. One obvious place to start might be to read about Design Patterns[^].
led mike
|
|
|
|
|
I'm using c++ for years..I'm already student. I've read a lot of things on pointer function (including the FAQ) and i'm not so good in the design pattern and a newbie with boost::function.
So unstead of say RTFM and tell on me, I would prefer you tell me how a function<> can help me in my problem as i can't pass it to my cfunc...
|
|
|
|
|
mp3butcher wrote: I would prefer you tell me how a function<> can help me in my problem as i can't pass it to my cfunc...
That's like asking how to make gold from straw. If you are asking about an alternative design for function pointers then there are several options like interfaces, functors and the function<>, but you would start by changing CFunc. These are alternatives to using function pointers they are not function pointers and therefore cannot be used as parameters that are defined to be function pointers. Get it?
led mike
|
|
|
|
|
OK that's all I would like to know...Thank you.
I can't keep the cfunc as it is... Damned C!
|
|
|
|
|
Hi Guys, I have developed this application and now realized that it is going to cost me alot of memory. Could you please suggest me some ideas based on your expereince. So here is the scenario.
1. I am reading and loading alot of images and text from an one xml file about 500 images.
2. Loading each images as an item in a listbox (so user can scroll down and can see all the images)
3. If user select any of the items from the listbox i display that item and stuff related to that item (like text, images)
Problem:
Since I am loading an entire xml file in memory and on the top I am making all the listbox item that consume alot of memory. Currently what i am thinking is that I should make each listbox item as thumbnail and load in listbox simply, so this way will save some processing time like reading and geneating each item. I am not 100% sure though.
I am lookign your help.
Thanks
|
|
|
|
|
You might want to take a look at using Virtualization on a ListView. There's a virtualization mode on the listview, which you may want to look into. To use this, you set VirtualMode = true; and VirtualListSize to some sensible amount. Then you hook up to the RetrieveVirtualItem event to load the next set of data in when you need it.
|
|
|
|