|
|
|
|
|
- Vocabulary
- How to use a.Net delegate with WINDEV?
- How to process the .NET events
- Tip
- Miscellaneous
DotNetDelegate (Function) Initializes a .NET delegate. This delegate will allow .NET to call back a WLanguage procedure or method in case of events or "callbacks". clOwn is OwnEvent clOwn:add_MyEvent(DotNetDelegate("MyHandler", "EventHandler<MyEventArgument>")) clOwn:Trigger("Hello")
PROCÉDURE MyHandler(src, args) Trace(args:Message)
Sintaxis
<Result> = DotNetDelegate(<WLanguage procedure> , <Type of Delegate>)
<Result>: .NET object .Net object of the delegate type. <WLanguage procedure>: Procedure name Name of the WLanguage procedure or method to call. This procedure has the following format:
PROCEDURE <Procedure Name>(Src, Args) where: - Src corresponds to the .NET object that sends the event
- Args corresponds to the .NET object used as parameter of the event.
<Type of Delegate>: Character string Name of the class of the delegate to create. This parameter must not correspond to a variable. Observaciones - Delegate Used to manage a callback. It is a "function" type. It defines the prototype of the function. The delegate is initialized with a .NET function corresponding to the prototype. The delegate is the .NET equivalent of the function pointer in C. It is possible to associate several methods with the same delegate: they will all be called.
Please note In .NET documentation, this term can also refer to "delegate methods", i.e. methods associated with a delegate. - Handler A special type of delegate dedicated to event handling.
- Event: An event can be associated with one or more handlers. When the event is triggered, all the handlers associated with this event are called.
How to use a.Net delegate with WINDEV? To use a.Net delegate with, you must: - Find the deleguate in the list of .NET classes
The delegate is a .NET class itself. The name of the delegate must be known (see the documentation of your .NET assembly). - Define the parameters of the delegate
The delegate defines an Invoke method. The WLanguage procedure associated with the delegate must have the same parameters. - Associate the WLanguage procedure with the delegate
The delegate is used in a .NET class. This class owns methods used to add or remove a "delegate method" to/from the delegate. See the documentation about your .NET assembly to find out the names of these methods.
Example: - Name of the class using the delegate: CUtiliseDelegate
- Delegate class name: CUtiliseDelegate.CpfMonDelegate
- Prototype of the Invoke method of the CUtiliseDelegate.CpfMonDelegate class: Invoke(integer)
- Prototype of the corresponding WLanguage method: Procedure MaCallbackWL(local i is int)
clUse is CUseDelegate
clUse:AddDelegate(DotNetDelegate("MyWLCallback", "CUseDelegate.CpfMyDelegate"))
clUse:UseDelegate()
How to process the .NET events To process the.Net events, you must: 1. Find the event The event is a member of a .NET class. This member has a name and a type. The type defines the type of the handler that can be associated with the event. The name is used to find two methods: - "add_<Event name>"
- "remove_<Event name>"
These two methods are used to associate and dissociate one or more handlers with/from an event. The type of the parameter for these two methods is the name of the handler type. Example: The OwnEvent class contains a MyEvent event whose type is EventHandler<MyEventArgument>. 2. Retrieve a handler A handler can be retrieved with DotNetDelegate: - The first parameter is the name of the WLanguage procedure
- The second parameter is the name of the class of the handler type. This name can be retrieved by the name of the type of parameters of "add_xxx" and "remove_xxx" methods.
Example: The WLanguage procedure has the following format: PROCÉDURE MyHandler(src, args) Trace(args:Message)
src is a .NET object of OwnEvent type, args is a .NET object of MyEventArgument type 3. Associate the handler with the event To associate the handler with the event, all you have to do is call the "add_<Event Name> method on the object that owns the event". Example: clOwn:add_MyEvent(DotNetDelegate("MyHandler", "EventHandler<MyEventArgument>"))
4. Trigger the event In our example, the call to clOwn:Trigger triggers the event. Tip In the WLanguage procedure, you can: - use the methods associated with the parameters of the procedure. However, the completion is not available.
- define a dynamic object and assign the desired parameter to it. The completion is available for the object.
These two methods are used in the detailed example. Miscellaneous - This function cannot be used in dynamic compilation.
- The WLanguage procedure is executed in a secondary thread. At each call, the HFSQL mode used is a light copy of the HFSQL context. The context is destroyed once the procedure has been executed.
Esta página también está disponible para…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|