Incorrect parameter for custom event handler

c++ builder

    Sponsored Links

    Next

  • 1. [BCB6] Published class property name
    Hi, I am writing a Component with a custom class as sub component witch is created inside my component's class. Everything works fine, but i get a strange behavior from the object inspector: If i put a TAOCRadioButton on my form, witch the name is "AOCRadioButton1", the OPCTag property is assigned with "AOCRadioButton1->". What happends ? here are the involved class defs Thanks //My subcomponent custom class class PACKAGE TAOCTag : public TAOCTagObject { private: protected: //Redinition de UpdateValue virtual void __fastcall UpdateValue(Variant Value,TDateTime TimeStamp); public: friend class TAOCRadioButton; //Constructeur __fastcall TAOCTag(TComponent* Owner); __published: //Publication de WriteOnly __property OpcWriteOnly; }; //My component class class PACKAGE TAOCRadioButton : public TRadioButton { private: TAOCTag* FAOCTagObject; TAOCTag* __fastcall GetFAOCTag(void); void __fastcall SetFAOCTag(TAOCTag*); protected: //Redinition de On Clic pour mise jour vers client OPC virtual void __fastcall AOCRadioBtnClic(TObject *Sender); public: //Constructeur __fastcall TAOCRadioButton(TComponent* Owner); //Destructeur __fastcall virtual ~TAOCRadioButton(); __published: //Tag li __property TAOCTag *OpcTag = {read=FAOCTagObject,write=FAOCTagObject}; }
  • 2. BCB5:Some observations when inserting components into a custom component
    Hello, how can inserting a component into a custom component be prevented at design time. When inserting e.g. a button into the custom component, something gets into trouble, according to the error messages. The next question is, what has to be done to make inserting components into custom components possible, and whether this is possible at all. The custom component I'm trying with is derived from a class itself derived from TFrame. It contains an OK button named Button1. There is one more problem, when trying to insert another OK button somewhere into the form the custom component is in, there are annoying messages, that Button1 is already used in the form. Regards, Sascha Michel
  • 3. Problem on custom event with builder 6
    Hi: I have this code, I'm been looking for everywhere searching for documentation about it but I can't find anything about my problem. This code works ok until I put some code in the OnInit event on the application. When I do that I get an EReadError of the property OnInit. Anyone could help me? //PanelGL.h //--------------------------------------------------------------------------- #ifndef PanelGlH #define PanelGlH //--------------------------------------------------------------------------- #include <SysUtils.hpp> #include <Controls.hpp> #include <Classes.hpp> #include <Forms.hpp> #include <ExtCtrls.hpp> #include <gl\gl.h> //--------------------------------------------------------------------------- class PACKAGE TPanelGl : public TPanel { private: HDC hDC; HGLRC hRC; PIXELFORMATDESCRIPTOR pfd; TNotifyEvent FOnPaint; TNotifyEvent FOnInit; bool acel; bool ok; protected: public: void __fastcall Paint(); __fastcall TPanelGl(TComponent* Owner); void __fastcall Create(TObject *Sender); DYNAMIC void __fastcall Init(); __published: __property TNotifyEvent OnPaint={read=FOnPaint, write=FOnPaint}; __property TNotifyEvent OnInit={read=FOnInit, write=FOnInit}; __property bool Aceleracion={read=acel, write=acel, default=true}; }; //--------------------------------------------------------------------------- #endif
  • 4. BDS2006 DesignIntf / DesignIde problem
    Hi, I'm trying to upgrade a few components from earlier versions to C++Builder 2006. Upgrading the .bpk packages gave several problems, so I created new C++Builder packages, and added the .PAS sources to it. The design packages use DesignIntf, DesignEditors, so I added designide.bpi to the Requires list. But still I get the error: Pascal Fatal Error F1026 File not found: DesignIntf.dcu designide.bpi is in the linker source path (I even tried to add it with the full path name into the Requires section). Earlier posts regarding the same problem suggest adding PFLAGS=-LUdesignide to the option source in BCB6. Editing the XML option source in BDS2006 is no longer possible, and the .bdsproj file doesn't contain a PFLAGS opion. Further I don't really understand what this does. Any suggestions? Thanks a lot! Bob

Incorrect parameter for custom event handler

Postby Myles Rippenhagen » Wed, 26 Oct 2005 02:43:50 GMT

Hi,

I have created several custom components and generally have had great 
success with them, but I am currently running into a problem where when I 
double-click on a published custom event (on the "Events" tab of the "Object 
Inspector" in the IDE), the inserted method declaration contains the wrong 
variable name.  The signature matches another, similar custom event, and it 
seems to be picking up the parameter name from this other definition.  I 
have double-checked that I am referencing the correct typedef in the 
definition of my custom component and I didn't see any problem.  I am using 
BCB6 Enterprise on WinXP.  Following are the important bits of the code.

...
typedef void __fastcall (__closure *BeforePostEvent) (TObject* Sender, bool 
&CanPost);
typedef void __fastcall (__closure *OnPutToDatabaseEvent) (TObject* Sender, 
bool &DoDefault);
...
private:
   OnPutToDatabaseEvent FOnPutToDatabaseEvent;
...
__published:
   __property OnPutToDatabaseEvent OnPutToDatabase = 
{read=FOnPutToDatabaseEvent, write=FOnPutToDatabaseEvent};
...

When I double-click on the "OnPutToDatabase" event in the IDE, the inserted 
code labels the bool parameter "CanPost" instead of "DoDefault".  It appears 
to just pick up the first typedef with a matching signature instead of using 
the typdef that I specified.

Any suggestions??



Re: Incorrect parameter for custom event handler

Postby Remy Lebeau (TeamB) » Wed, 26 Oct 2005 03:12:24 GMT







That is a long-standing known issue.  The OI matches events by signatures
only, not names.  You have two different events that have the exact same
signature (return value, calling convention, parameter data types, and
parameter ordering).  The OI always generates code using the first event
type that matches the required signature.


That is exactly why you are seeing what you have described.  There is
nothing you can do to prevent the OI from behaving that way.  You will just
have to change the signature of one of your events so that they no longer
match each other.


The OI does not care about typedefs.  It only cares about signatures.


Gambit



Similar Threads:

1.Why event handler first parameters are incorrect

I noticed that DataGridView CellValidated() and other event handler first 
parameter is object:

        Grid.CellValidated+=new 
DataGridViewCellEventHandler(Grid_CellValidated);
...

        void Grid_CellValidated(object sender, DataGridViewCellEventArgs e) 
{
....
}

Why ? Correct signature must be

void Grid_CellValidated(DataGridView sender, DataGridViewCellEventArgs e) {

Andrus. 

2.Custom event handler

Hello, all.  I am trying to develop my first component and I am trying to
figure something out.  I created a MouseMove event handler for my component
(TMyComponent::MouseMove) and it works fine.  I added my component to a new
project (TMyComponent *MyComponent1) and I want perform a task in the
MyComponent1MouseMove event.  My problem is that the TMyComponent::MouseMove
function is executing, but the TForm1::MyComponent1MouseMove function is
not.  I set the OnMouseMove event to MouseMove for the MyComponent1
instance, but it still only calls the component handler, not the custom
handler.  Why won't it call my custom handler?  Actually, I will need both
functions to execute.  Will I need to explicitly call
TMyComponent::MouseMove() from within the TForm1::MyComponent1MouseMove
function to get both to execute?  Any feedback will be greatly appreciated.

Thanks,

Mark


3.Custom event handlers in .NET Winforms

4.Custom Event Handler

I am getting an error down below, this same code works in VB, what gives?

private void Form1_Load(object sender, System.EventArgs e)

{




System.Windows.Forms.LinkLabel l = new System.Windows.Forms.LinkLabel();

FileSystemWatcher watcher = new FileSystemWatcher();

watcher.Path = @"C:\TempFolder";

watcher.Filter = "*.txt";

//error here: Cannot implicitly convert type System.EventHandler to
FileSystemWatcher,

watcher.Created += new System.EventHandler(OnCreated);

watcher.EnableRaisingEvents = true;





}

private void OnCreated(object sender, System.EventArgs e)

{

MessageBox.Show("yo");











}


5.Custom event handlers and searching a listview

6. Passing in a OnMouseDown/OnMouseUp event handler as a parameter of a function

7. How to pass more than two parameters in the event handler

8. TADODataset.Parameters.Refresh results in incorrect parameter names



Return to c++ builder

 

Who is online

Users browsing this forum: No registered users and 79 guest