Вниз
Скачать: CL | DM;

Перехват сообщений при создании компонентов   Найти похожие ветки 

← →
Константинов ©   (2004-09-15 21:57) [0]

Как советуют в книгах, протестировал свой визуальный компонент ( потомок TPaintBox ), динамически создавая экземпляр без добавления в палитру компонентов  все работает на ура. После инсталяции в палитру компонент ведет себя весьма странно, а точнее бастует напрочь. Вылетает AV при попытке добавить компонент на форму или при щелчке мышью на компоненте или на проектируемой форме.

Я перехватывал сообщения мыши и видимо не удачно:

   procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
   procedure WMLButtonUp(var Message: TWMLButtonUp); message WM_LBUTTONUP;
   procedure WMMouseMove(var Message: TWMMouseMove); message WM_MOUSEMOVE;
   procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK;

класса TContorl

Что может быть? Чего нельзя делать компоненту на этапе разработки?  Код слишком большой, чтобы его приводить полностью, но эти процедуры я перехватывал для перерисовки компонента по щелчку мыши и генерации моего события OnSelected ( выделение цветом определенного участка компонента ) после моего кода в процедуре я ставил  inherited;

Сорри за сумбурное изложение.
Заранее спасибо.


← →
Константинов ©   (2004-09-16 07:15) [1]

Во сне пришла мысль, что inherited нужно ставить впереди, вечером проверю. :)


← →
Amoeba ©   (2004-09-16 14:10) [2]

А если делать проверку св-ва ComponentState на csDesigning?


← →
Константинов ©   (2004-09-16 17:51) [3]

inherited не помогло... а вот ComponentState х-м... сейчас попробую.


← →
Amoeba ©   (2004-09-17 11:07) [4]

inherited трогать не надо.


← →
Юрий Зотов ©   (2004-10-08 08:20) [5]

> Константинов ©   (15.09.04 21:57)  

> Вылетает AV при попытке добавить компонент на форму или при
> щелчке мышью на компоненте или на проектируемой форме.

Следовательно, Ваши обработчики сообщений мыши здесь совершенно ни при чем, не так ли?

При добавлении компонента на форму срабатывает его конструктор, а затем происходит вот что.

Меняется Designer.Selection (выбранный компонент в дизайнере форм), IDE считывает список свойств компонента и значений этих свойств (чтобы показать его в Object Inspector) и создает экземпляр редактора компонента (TComponentEditor, либо его потомок, если такой имеется). То же самое происходит и при выборе компонента щелчком мыши, и при щелчке по форме (если до этого она не имела фокуса, но перед тем был выбран Ваш компонент).

Вот где-то тут у Вас и ошибка. Скорее всего, что-то намудрили со свойствами. Похоже, в одном из методов Get происходит обращение по неверному адресу - вот туда-то, видимо, и нужно вставить if csDesigning in ComponentState.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.022 c
4-1121761652
new12345
2005-07-19 12:27
2005.09.04
Проблема с hook ом


6-1116580918
EGK
2005-05-20 13:21
2005.09.04
Не работает apache shared module под 2 Apache


4-1121321216
Хинт
2005-07-14 10:06
2005.09.04
Значение переменной чужого приложения


1-1124135721
Aleksandrrr
2005-08-15 23:55
2005.09.04
графика в консольном приложении


3-1122012785
Hursand
2005-07-22 10:13
2005.09.04
displaytext




   Наверх