Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2009, 15:52   #1
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию Проблема перехвата сообщений при создании невизуального компонента

При написании невизуального компонента столкнулся с проблемой перехвата сообщений , вот код, в чем ошибка:
Код:
unit Proba;

interface

uses
Classes, Controls, Graphics, Windows,Forms, Messages;


type

TA=Class(TComponent)
private
procedure WMNCMOUSEMOVE(var Message: TMessage);message WM_NCMOUSEMOVE;
protected
{ Protected declarations }
public

constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
end;

procedure Register;

implementation



procedure Register;
begin
RegisterComponents('Standard', [TA]);
end;

///////////////
constructor TA.Create(AOwner: TComponent);
begin
inherited Create(Aowner);

end;

destructor TA.Destroy;
begin
inherited Destroy;
end;

procedure TA.WMNCMOUSEMOVE(var Message: TMessage);
var
s : string;
begin
case Message.wParam of
HTERROR:
s:= 'HTERROR';
HTTRANSPARENT:
s:= 'HTTRANSPARENT';
HTNOWHERE:
s:= 'HTNOWHERE';
HTCLIENT:
s:= 'HTCLIENT';
HTCAPTION:
s:= 'HTCAPTION';
HTSYSMENU:
s:= 'HTSYSMENU';
HTSIZE:
s:= 'HTSIZE';
HTMENU:
s:= 'HTMENU';
HTHSCROLL:
s:= 'HTHSCROLL';
HTVSCROLL:
s:= 'HTVSCROLL';
HTMINBUTTON:
s:= 'HTMINBUTTON';
HTMAXBUTTON:
s:= 'HTMAXBUTTON';
HTLEFT:
s:= 'HTLEFT';
HTRIGHT:
s:= 'HTRIGHT';
HTTOP:
s := 'HTTOP';
HTTOPLEFT:
s:= 'HTTOPLEFT';
HTTOPRIGHT:
s:= 'HTTOPRIGHT';
HTBOTTOM:
s:= 'HTBOTTOM';
HTBOTTOMLEFT:
s:= 'HTBOTTOMLEFT';
HTBOTTOMRIGHT:
s:= 'HTBOTTOMRIGHT';
HTBORDER:
s:= 'HTBORDER';
HTOBJECT:
s:= 'HTOBJECT';
HTCLOSE:
s:= 'HTCLOSE';
HTHELP:
s:= 'HTHELP';
else s:= '';
end;
TForm(Owner).Caption := s;
Message.Result := 0;
end;

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

Вручную можно запустить, а автоматом не хочет.
Подскажите в чем проблема?

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.

Последний раз редактировалось mihali4; 27.02.2009 в 17:29. Причина: Исправляю в последний раз. Далее буду только удалять.
volod3000 вне форума Ответить с цитированием
Старый 27.02.2009, 17:29   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

И вновь проблема в невнимательном прочтении (если вы их вообще читали до конца) правил раздела.
По-моему, я там вполне доступно даже для средних умов описал как формлять код с помощью соответствующего тэга.
mihali4 вне форума Ответить с цитированием
Старый 27.02.2009, 18:07   #3
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

В следующий раз буду внимательней !

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.

Последний раз редактировалось mihali4; 01.03.2009 в 12:32.
volod3000 вне форума Ответить с цитированием
Старый 28.02.2009, 22:08   #4
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

Не визуальные компоненты не являются потомками классов оконных компонент, поэтому никаких сообщений Windows в них вообще не поступает и что-либо перехватывать бессмысленно.
Rik вне форума Ответить с цитированием
Старый 01.03.2009, 11:19   #5
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

Rik!
Я с Вами не согласен.

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Старый 01.03.2009, 11:28   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

события от мыши получают потомки класса TControl а не TComponent
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.03.2009, 15:03   #7
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

У кого Delphi 2009 испытайте
Компонент полностью управляет заголовком формы.

http://letitbit.net/download/f3cce47...ption.rar.html

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Старый 08.03.2009, 14:13   #8
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

Цитата:
Сообщение от volod3000 Посмотреть сообщение
У кого Delphi 2009 испытайте
Компонент полностью управляет заголовком формы.

http://letitbit.net/download/f3cce47...ption.rar.html
Вы считаете что это благодаря тому, что компонент перехватывает сообщения? На самом деле это не так, он сообщения сам не перехватывает, он заставляет передавать ему сообщения на обработку. Скорее всего он подменяет процедуру окна MianWindowProc, куда стекаются все сообщения, своей процедурой...

Последний раз редактировалось Rik; 08.03.2009 в 14:17.
Rik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема при создании таблицы используя sql Proof БД в Delphi 2 26.02.2009 22:09
Mootools.Проблема определения события OnClick элемента списка при его динамическом создании. ilusha JavaScript, Ajax 2 25.02.2009 10:43
Проблема при создании БД HAMMAN БД в Delphi 4 25.04.2008 08:44
проблема при создании отчета в QuickRep Алёна БД в Delphi 2 16.11.2007 11:01
При создании формы! Anton Помощь студентам 4 08.08.2007 08:20