CreateMethod in DesignTime

1 отговора 80 прегледа
#1

CreateMethod in DesignTime

Искам да използвам IDesigner.CreateMethod(const Name: String; TypeData: PTypeData): TMethod, за да си добавя методче в Unit-a, както го прави ObjectInspector-a
, но не мога да си извлека TypeData-та на методчето.

Методчето представлява нещо като:
Type
TMyEvent = procedure (var1: Tvar1; var2: TVar2) of object;

Пробвах да си напиша сам TypeData-та:
когато става въпрос за метод (tkMethod), Delphi иска:
1. MethodKind : TMethodKind;
2. ParamCount : Byte;
3. ParamList : array[0..1023] of Char

MethodKind := TMyEvent;
ParamCount := 2;
обаче ParamList изобщо не ми е ясно как ще стане

На едно място четох:
ParamList : array[0..1023] of Char
{in reality ParamList is a array[1..ParamCount] of:
record
Flags : TParamFlags;
ParamName : ShortString;
TypeName : ShortString;
end;
followed by
ResultType : ShortString}

обаче и това не мога да го разбера!

Пробвах и по друг начин:

TypeInfo.Kind := tkMethod;
TypeInfo.Name := 'TMyEvent';

TypeData := GetTypeData(Addr(TypeInfo));

Обаче и това не става, омазва се, излизат йероглифи в Unit-a, дори и когато го пробвам с готови типове, като например TNotifyEvent


Някои талантлив програмист наоколо, случайно да има идеи по въпроса

Отговор
в отговор на Component fighter #2

CreateMethod in DesignTime +++

Малко съм объркал горе

TTypeData.MethodKind не е TMyEvent, ами е съвсем друго нещо

TTypeData.MethodKind := mkProcedure;

Отговор