#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;
Этот топик читают: Гость
Ответов: 4634
Рейтинг: 751
|
|||
andrestudio, так:
|
|||
карма: 26 |
| ||
Голосовали: | andrestudio |
Ответов: 5227
Рейтинг: 587
|
|||
nesco,Netspirit, для меня это тёмный лес, но всёравно спасибо, буду думать как зделать заплатку.
|
|||
карма: 4 |
|
Ответов: 4634
Рейтинг: 751
|
|||
Приведенный мной выше пример работает только, если в проекте только один экземпляр компонента THiAsmClass (демонстрация этого - мой компонент InputBox в "Компонентах").
Если в проекте несколько экземпляров - в переменной р будет ссылка только на последний инициализированный экземпляр. Поупражняйся пока с одним экземпляром. Когда разберешся - качай мой компонент SysMenuEx, там реализовано, как работать нескольким экземплярам компонента с одной WndProc. |
|||
карма: 26 |
|
Разработчик
Ответов: 26173
Рейтинг: 2128
|
|||
Netspirit писал(а): Приведенный мной выше пример работает только, если в проекте только один экземпляр компонента THiAsmClass (демонстрация этого - мой компонент InputBox в "Компонентах").
Если в проекте несколько экземпляров - в переменной р будет ссылка только на последний инициализированный экземпляр Netspirit, повторяемся nesco писал(а): Можно было сделать глобальной переменной, но тут требуется наличие только одного экземпляра класса, если их будет несколько, то работать будет только последний инициализированный |
|||
карма: 22 |
|
Ответов: 4634
Рейтинг: 751
|
|||
nesco, извини, пересиделся за компьютером наверное
![]() |
|||
карма: 26 |
|
Ответов: 5227
Рейтинг: 587
|
|||
nesco,Netspirit не получилась у меня эта фишка, помогите чем можете, на последнем шаге запнулся
![]() вот весь проект http://slil.ru/28192156 ~55Kb путь получает только с кнопки пока ![]() |
|||
карма: 4 |
|
Ответов: 4634
Рейтинг: 751
|
|||
andrestudio, я приведенный мной выше пример подправил, только что заметил некоторые неточности.
Фрагмент в твоем коде
Также раскоментируй var p:Longint; Замени
на
И проверь, действительно ли вызывается процедура ChildCallback (положи в нее MBox). |
|||
карма: 26 |
| ||
Голосовали: | andrestudio |
Ответов: 5227
Рейтинг: 587
|
|||
Netspirit, спасибо большое, ссылка на метод заработала а на точку пока нет, ну да ладно мне такой вариант даже лучше подходит. Вот теперь можно кодить потихоньку
![]() |
|||
карма: 4 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 9 раз(а), последний 2025-01-19 10:44:22 |
|||
карма: 0 |
|
Ответов: 4634
Рейтинг: 751
|
|||
Выше - это я.
|
|||
карма: 26 |
|
Ответов: 5227
Рейтинг: 587
|
|||
Ага, принцип уловил, дальше дело техники
![]() ------------ Дoбавленo в 21.58: Очень печально но событие по WM_LBUTTONUP не ловится ![]() |
|||
карма: 4 |
|
Ответов: 4634
Рейтинг: 751
|
|||
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 |
|