Advanced member
Статус: Не в сети Регистрация: 23.10.2003 Откуда: Иркутск/Майкоп
Максим Нужно, чтобы во время исполнения кода был указатель на имя текущей процедуры/метода. Не знаю, есть ли он в дельфийском (или каком-нибудь другом) коде.
_________________ Края каждого совершенно нового крышка процессора не на 100% гладкая. Это связано с тем, что следов мастерства не избежать. (c) Али.
Member
Статус: Не в сети Регистрация: 05.01.2003 Откуда: Москва Фото: 2
vor НУ оказалось в итоге все относительно легко. Надо брать указатель с ebp и искать в map файле это. Но правда я от этого метода отказался, пришлось все самому писать.
Получился вызов типа
Function GetObjectAndMethod(ParentObj, Obj: TObject; EventName: String = EmptyStrConst): String; Register; Var Method: TMethod; PropInfo: PPropInfo; Begin If ParentObj = Nil Then Begin Result := EmptyStr; Exit; End;
Result := ParentObj.ClassName;
If Obj = Nil Then Exit; If EventName = EmptyStr Then If QuickSameText(Obj.ClassName, TActionNameConst) Then EventName := OnExecuteNameConst Else If QuickSameText(Obj.ClassName, TTimerNameConst) Then EventName := OnTimerNameConst Else If QuickSameText(Obj.ClassName, TcxPageControlNameConst) Then EventName := OnChangeNameConst Else If QuickSameText(Obj.ClassName, TfrmMainNameConst) Then EventName := OnCreateNameConst Else If QuickSameText(Obj.ClassName, TfrmRegistryNameConst) Then EventName := OnCreateNameConst Else If QuickSameText(Obj.ClassName, TRegistryButtonNameConst) Then EventName := OnClickNameConst Else If QuickSameText(Obj.ClassName, TCWASessionNameConst) Then EventName := OnCallEventNameConst Else If QuickSameText(Obj.ClassName, TDBGridEhNameConst) Then EventName := OnDblClickNameConst Else If QuickSameText(Obj.ClassName, TCheckListBoxNameConst) Then EventName := OnClickCheckNameConst Else If QuickSameText(Obj.ClassName, TCheckBoxNameConst) Then EventName := OnClickNameConst Else If QuickSameText(Obj.ClassName, TcxButtonNameConst) Then EventName := OnClickNameConst;
PropInfo := GetPropInfo(Obj.ClassInfo, EventName); If (PropInfo = Nil) Then Exit;
Method := GetMethodProp(Obj, PropInfo); If (Method.Code = Nil) Then Exit; Result := Result + DotChar + ParentObj.MethodName(Method.Code); End;
В eventname надо передавать тип события, которое произошло. Ну я правда в самой функции установил для некоторых объектов eventname по умолчанию.
_________________ Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!
привет всем. извиняюсь что лезу с ламерскими проблемами...
делаю просмотрщик изображений. для начала беру DriveComboBox, DirectoryListBox, FileListBox и TImage. Первые 3 между собой связываю без проблем, получается что-то вроде проводника. Далее пишу:
procedure TForm8.filelistbox1Click(Sender: TObject);
begin
image.Picture.LoadFromFile(filelistbox1.filename);
end;
И при выборе картинки вот такая ошибка:
#77 что делать?
Максим ну вот допустим, на твоей форме присутствует компонент Tree, и когда заходишь в обработчик событий там есть OnChange и OnChanging. Вот мне интересно, чем они отличаются друг от друга. В моем расположении есть Библия Делфи у Михаила Фленова, но с этими событиями там всё запутано Добавлено спустя 57 секунд Максим
это сообщение тебе было адресовано
Member
Статус: Не в сети Регистрация: 05.01.2003 Откуда: Москва Фото: 2
vor Вот бы еще пальцем ткнул, а так надо в обычном TMemo сделать так же, как сделано в word или например в том же Фоксе при установке некоторых плагинов.
_________________ Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!
Member
Статус: Не в сети Регистрация: 25.01.2008 Откуда: СПб
Есть два объекта одного типа. Есть ли простой способ скопировать свойства одного объекта в другой? Если просто присвоить один объект другому, они начинают ссылаться на одну и ту же область памяти, и при удалении (изменении) одного объекта удаляются (изменяются) свойства другого. Или каждый раз создавать у объекта метод Copy, в котором вручную прописывать копирование всех свойств?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения