Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.10.20;
Скачать: [xml.tar.bz2];

Вниз

Обработка сообщений формы из её компонента.   Найти похожие ветки 

 
uncle   (2003-08-16 02:11) [0]

О, уважаемые гуру, помогите решить мою проблему. Я делаю компонент (= class(TComponent)), одной из функций которого является определение, можно ли форму, на которой он лежит, таскать за клиентскую область. Для этого я должен обработать сообщение WM_NCHITTEST, которое поступает на форму. Так вот как мне написать обработчик этого сообщения в именно в компоненте? Проблема ещё и в том, что из компонента нельзя вызвать inherited WndProc(Message) для формы. Заранее спасибо.


 
Юрий Федоров   (2003-08-16 02:47) [1]

type
TMyComponent = class(TComponent)
private
FOldOwnerWndProc: TWndMethod;
procedure NewOwnerWndMethod(var Message: TMessage);
public
constructor Create(aOwner: TComponent); override;
end;

...
constructor TMyComponent.Create(aOwner: TComponent);
begin
if not (aOwner is TCustomForm) then
raise exception.Create("Кидайте мой комппонент на форму а не фиг знает куда плиз");
inherited Create(aOwner);
FOldOwnerWndProc:=(aOwner as TCustomForm).WindowProc;
(aOwner as TCustomForm).WindowProc:=@NewOwnerWndMethod;
end;

procedure TMyComponent.NewOwnerWndMethod(var Message: TMessage);
begin
if Message.Msg = <мое сообщение > then
begin
<я делаю то, что считаю нужным с овнером как формой и с сообщением которое пришло>
end
else
FOldOwnerWndProc(Message);
end;



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

Форум: "WinAPI";
Текущий архив: 2003.10.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.006 c
1-65417
Эдуард
2003-10-06 21:29
2003.10.20
Как из Dll ки определить место, где он лежит?


1-65418
deivan
2003-09-21 22:23
2003.10.20
TImage


3-65355
Слэш
2003-09-29 15:31
2003.10.20
Как печатать из FastReport на 2-х стороннем принтере


1-65441
MakNik
2003-10-09 10:53
2003.10.20
была ли ранее выполнена команда AssignFile?


9-65303
Vulko
2003-04-11 17:08
2003.10.20
Шашки...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский