Re: dynamic_cast is only casting right?
It's not a question of TEdit being descendant of TObject, it's whether
Sender IS_A TEdit.
OK when you want me to paste full code I also did:
if (Sender->ClassNameIs("TEdit"))
{
try {
TEdit *dEdit = dynamic_cast<TEdit *>(Sender);
if (dEdit) if (dEdit->Modified) Button_Apply->Enabled = true;
}
catch (...) {
//whatever
}
}
So there... checks if it is TEdit, catches exception (bad_cast) and NULL :)
All handled :)
The event may come from TEdit, TCheckBox and TComboBox (and nothing else) so
ClassName must be checked to determine where it came from.
You could also put in an assert:
assert(dynamic_cast<TEdit*>(Sender));
(then, you do as usual)
Yes, but no need in above case.
Just a comment: yeah, you could catch, and if things still are the way
they were when I was doing Delphi/C++ builder, you will catch
EAccessViolation ( which is equivalent to a crash, but VCL refuses to
die and stumbles on ;-) ).
Yes in this code but not in the above "complete" version I pasted. That one
will catch only bad_cast exception as this is the only exception that may
happen at that moment due to additional NULL check. I could probably also
check if exception type is std::bad_cast but I guess no need just more to
type :)