![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Приложение работает с фреймами.
Делал так. Код:
unit uParent; //Главный фрейм (предок) type TframeParent = class(TFrame) procedure EnterToFrame; virtual; Код:
unit uOne; type TframeOne = class(TframeParent) //Рабочий фрейм public procedure EnterToFrame; override; Код:
unit uMain; // Приложение var CurrentFrame: TframeParent = nil; procedure TfMain.Work; begin CurrentFrame:=TframeOne.Create(nil); CurrentFrame.Parent := ScrolBox1; CurrentFrame.EnterToFrame; // Так входил в процедуру end; CurrentFrame.EnterToFrame -таким способом обращался к процедуре. Теперь перешёл на такой код, вызов фрейма по имени. Код:
unit uParent; type TframeParent = class(TFrame) procedure EnterToFrame; virtual; Код:
unit uOne; type TframeOne = class(TframeParent) public procedure EnterToFrame; override; Код:
unit uMain; MyClass: TComponentClass; MyComp: TComponent = nil; implementation type TClassArray = array [1..1] of TPersistentClass; const ClassArray: TClassArray = (TframeOne); procedure TfMain.Work; var generalPtr : Pointer; begin if MyComp<>nil then FreeAndNil(MyComp); MyClass:= TComponentClass(GetClass('TFrameOne')); //Где-то здесь при вызове разных фреймов происходит расход памяти MyComp := MyClass.create(self); TControl (MyComp) .parent := ScrollBox1; generalPtr:= MyComp1.MethodAddress('EnterToFrame'); // нашёл указатель на процедуру ...EnterToFrame; // А как теперь войти в эту процедуру не пойму. end; Не подскажите как справиться с утечкой памяти и добраться до своих процедур в фреймах (или вызвать процедуру по указателю)? ..... Спустя некоторое время .... добавил Код:
type TProc = procedure of object; Код:
TfMain.Work; var .... MethodVar: TMethod; proc: TProc; begin .... MethodVar.Data := generalPtr; MethodVar.Code := generalPtr; Proc := TProc(MethodVar); Proc; Теперь до процедуры добрался, только до главного фрейма, а потомки не отрабатываются.... Последний раз редактировалось tebeen, 10.07.2010 в 17:30. |