#pas
var
p:Longint;
constructor THiAsmClass.Create;
begin
...
p:=Longint(Self);
...
end;
function ChildCallback(HWnd: THandle; Msg: Cardinal;
....
begin
....
THiAsmClass(Pointer(P))._hi_onEvent(onPath, path);
...
end;
Этот топик читают: Гость
Ответов: 4630
Рейтинг: 749
|
|||
andrestudio, так:
|
|||
карма: 26 |
| ||
Голосовали: | andrestudio |
Ответов: 5227
Рейтинг: 587
|
|||
nesco,Netspirit, для меня это тёмный лес, но всёравно спасибо, буду думать как зделать заплатку.
|
|||
карма: 4 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Приведенный мной выше пример работает только, если в проекте только один экземпляр компонента THiAsmClass (демонстрация этого - мой компонент InputBox в "Компонентах").
Если в проекте несколько экземпляров - в переменной р будет ссылка только на последний инициализированный экземпляр. Поупражняйся пока с одним экземпляром. Когда разберешся - качай мой компонент SysMenuEx, там реализовано, как работать нескольким экземплярам компонента с одной WndProc. |
|||
карма: 26 |
|
Разработчик
Ответов: 26155
Рейтинг: 2127
|
|||
Netspirit писал(а): Приведенный мной выше пример работает только, если в проекте только один экземпляр компонента THiAsmClass (демонстрация этого - мой компонент InputBox в "Компонентах").
Если в проекте несколько экземпляров - в переменной р будет ссылка только на последний инициализированный экземпляр Netspirit, повторяемся nesco писал(а): Можно было сделать глобальной переменной, но тут требуется наличие только одного экземпляра класса, если их будет несколько, то работать будет только последний инициализированный |
|||
карма: 22 |
|
Ответов: 4630
Рейтинг: 749
|
|||
nesco, извини, пересиделся за компьютером наверное
|
|||
карма: 26 |
|
Ответов: 5227
Рейтинг: 587
|
|||
nesco,Netspirit не получилась у меня эта фишка, помогите чем можете, на последнем шаге запнулся , но чую овчинка выделки стоит. nesco, через инжект можно всю линейку Shell перетащить да из Delphi VCL кому до размера пофиг (как мне например) тоже прикрутить контролы будет без проблем наверно.
вот весь проект http://slil.ru/28192156 ~55Kb путь получает только с кнопки пока |
|||
карма: 4 |
|
Ответов: 4630
Рейтинг: 749
|
|||
andrestudio, я приведенный мной выше пример подправил, только что заметил некоторые неточности.
Фрагмент в твоем коде
Также раскоментируй var p:Longint; Замени
на
И проверь, действительно ли вызывается процедура ChildCallback (положи в нее MBox). |
|||
карма: 26 |
| ||
Голосовали: | andrestudio |
Ответов: 5227
Рейтинг: 587
|
|||
Netspirit, спасибо большое, ссылка на метод заработала а на точку пока нет, ну да ладно мне такой вариант даже лучше подходит. Вот теперь можно кодить потихоньку
|
|||
карма: 4 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 7 раз(а), последний 2022-09-20 01:41:29 |
|||
карма: 0 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Выше - это я.
|
|||
карма: 26 |
|
Ответов: 5227
Рейтинг: 587
|
|||
Ага, принцип уловил, дальше дело техники
------------ Дoбавленo в 21.58: Очень печально но событие по WM_LBUTTONUP не ловится , может кто в курсе в чём дело, вместо него двойной клик срабатывает. |
|||
карма: 4 |
|
Ответов: 4630
Рейтинг: 749
|
|||
andrestudio писал(а): вместо него двойной клик срабатываетТо есть, то, что должно было срабатывать по одиночному клику, срабатывает только по двойному? Смахивает на неверное значение константы WM_LBUTTONUP, но это невероятно. Посмотри, может ты перепутал константы. |
|||
карма: 26 |
|
Ответов: 5227
Рейтинг: 587
|
|||
Да, мне нужны именно события WM_KEYUP и WM_LBUTTONUP, т.к при WM_KEYDOWN и WM_LBUTTONDOWN возращает предыдущий путь, не отрабатывает контрол. Константы в Message.pas заданы верно, я проверил. Скорей всего гдето в другом месте собака порыта.
|
|||
карма: 4 |
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
Смотрю коды готовых проектов(Ctrl+D), раз сто увидел Self((мультик)ClassMain := Self;...) и никак не разберусь ЧаВо это за переменная, кто нибудь может подсказать?
Я это к тому, что хочу создать мультик, умеющий передавать значения property из компонента класса MultiElement(Ex) в класс EditMulti(Ex), например есть компонент MultiElement(_prop_Str1:string,_prop_Str2:string), как передать их значение в EditMulti для дальнейшей обработки?, а натыкаюсь на Self |
|||
карма: 10 |
|
Ответов: 5446
Рейтинг: 323
|
|||
Assasin, Self - это указатель на текущий экземпляр (instance) текущего класса.
|
|||
карма: 1 |
|