CreateMethod in DesignTime
1 отговора
80 прегледа
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
Някои талантлив програмист наоколо, случайно да има идеи по въпроса
, но не мога да си извлека 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
Някои талантлив програмист наоколо, случайно да има идеи по въпроса
CreateMethod in DesignTime +++
Малко съм объркал горе
TTypeData.MethodKind не е TMyEvent, ами е съвсем друго нещо
TTypeData.MethodKind := mkProcedure;
TTypeData.MethodKind не е TMyEvent, ами е съвсем друго нещо
TTypeData.MethodKind := mkProcedure;