-
Кстати, тоже интересная задачка - в run-time получить список всех использованных в проекте классов. Желательно, в виде дерева наследования.
-
У меня такая задачка: Как создать экземпляр класса в стеке? (по аналогии с C++).
-
> Юрий Зотов © (15.06.16 14:33) [20]
var LContext: TRttiContext; LType: TRttiType; begin { Obtain the RTTI context } LContext := TRttiContext.Create;
{ Enumerate all types declared in the application } for LType in LContext.GetTypes() do OutputDebugString(PChar(LType.Name));
LContext.Free; из справки )
-
> DayGaykin © (15.06.16 15:40) [21]procedure Test2; //const // cl = TTest.InstanceSize; var // a : array [1..cl] of Byte; t : TTest; begin // t := @a; t := StackAlloc(TTest.InstanceSize); TTest.InitInstance(t); end; Не? , а StackAlloc можно взять тут http://sourceforge.net/projects/graphics32/files/graphics32/ ))
-
-
GR32_LowLevel.pas -> StackFree(t);
зы, там в 64bit asm вроде поправимая, но ошибка.
-
> Leonid Troyanovsky © (15.06.16 10:31) [11]
> Но, в результате получаю, что на кнопках (TButton, TRadioButton, > TCheckBox) оно не срабатывает.
На TRadioButton оно работает, а для TButton новую процедуру надо делать (по аналогии с TButton.Click) примерно так:
type TClickproc = procedure(ASelf: TObject);
var oldproc: TClickproc;
procedure TControlClick(ASelf: TObject); var s: String; begin oldproc(ASelf); s := 'control '+TComponent(ASelf).Name; OutputDebugString(PChar(s)); end;
procedure TButtonClick(ASelf: TObject); var Form: TCustomForm; begin Form := GetParentForm(TControl(ASelf)); if Form <> nil then Form.ModalResult := TButton(ASelf).ModalResult; TControlClick(ASelf); end;
затем
oldproc := FindDynamicMethod(TControl, -21); ReplaceDynamicMethod(TControl, -21, @TControlClick); ReplaceDynamicMethod(TButton, -21, @TButtonClick);
Для TCheckBox делать мне уже влом.
Для желающих поупражняться могу выложить юнит целиком.
-- Regards, LVT.
-
> Rouse_ © (15.06.16 12:43) [13]
С вертолета, танка - все это неспортивно ;)
-- Regards, LVT.
-
> Leonid Troyanovsky © (16.06.16 12:38) [27] > С вертолета, танка - все это неспортивно ;)
Зависит от задачи :) Иногда муху реально проще убить из пушки :)
|