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

Вниз

Получение сообщения, когда компонент не в фокусе...   Найти похожие ветки 

 
ekto ©   (2008-12-08 14:28) [0]

Всем привет.
Есть форма, на ней TScrollBox, в ScrollBox запыхиваю фреймы, на них - TChart"ы...
Нужно сделать прокрутку скрулбокса колесиком, но, т.к. фокус поймать нечем, то и сообщения не передаются в него:(

Сделал так:

procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
 MousePos: TPoint; var Handled: Boolean);
begin
 if (ScrollBox1.ScreenToClient(Form1.ClientToScreen(MousePos)).X >= ScrollBox1.Left)
   and (ScrollBox1.ScreenToClient(Form1.ClientToScreen(MousePos)).X <= (ScrollBox1.Left + ScrollBox1.Width))
   and (ScrollBox1.ScreenToClient(Form1.ClientToScreen(MousePos)).Y >= ScrollBox1.Top)
   and (ScrollBox1.ScreenToClient(Form1.ClientToScreen(MousePos)).Y <= (ScrollBox1.Top + ScrollBox1.Height)) then

работает, вроде... А как сделать по-симпотишнее?


 
Ega23 ©   (2008-12-08 14:32) [1]

procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
var
 pt : TPoint;
begin
 pt := ScrollBox1.ScreenToClient(ClientToScreen(MousePos));
if (pt.X >= ScrollBox1.Left)
  and (pt.X <= (ScrollBox1.Left + ScrollBox1.Width))
  and (pt.Y >= ScrollBox1.Top)
  and (pt.Y <= (ScrollBox1.Top + ScrollBox1.Height)) then


?


 
clickmaker ©   (2008-12-08 14:36) [2]

if PtInRect(BoundsRect, MousePos) ?


 
clickmaker ©   (2008-12-08 14:37) [3]

ScrollBox1.BoundsRect, конечно же


 
ekto ©   (2008-12-08 14:41) [4]


> clickmaker ©   (08.12.08 14:37) [3]


> Ega23 ©   (08.12.08 14:32) [1]


Спасибо, Буду знать:)

 Тока я имел в виду несколько иное: как мне "заставить" TForm передавать сообщения компоненту, который не в фокусе? Ведь TLabel, напр, получает же их?


 
clickmaker ©   (2008-12-08 14:45) [5]

> Ведь TLabel, напр, получает же их

TLabel не может ничего получать, так как это не оконный компонент. Его рисует сама форма


> как мне "заставить" TForm передавать сообщения компоненту

SomeComponent.Perform(msgid, wparam, lparam);
SomeComponent должен наследоваться от TWinControl


 
ekto ©   (2008-12-08 14:55) [6]


> clickmaker ©   (08.12.08 14:45) [5]


> TLabel не может ничего получать, так как это не оконный
> компонент. Его рисует сама форма



> SomeComponent.Perform(msgid, wparam, lparam);
> SomeComponent должен наследоваться от TWinControl


Так приятно уличить мастера в ошибке:))). Даже в понедельник.
Именно через Perform, форма и передает сообщения компонентам, наследникам TGraphicControl.


 
clickmaker ©   (2008-12-08 15:19) [7]

> Именно через Perform, форма и передает сообщения компонентам,
> наследникам TGraphicControl

да. Однако, в отличие от оконных компонентов, неоконные сами ничего не обрабатывают. Они даже не рисуют сами себя, а вызывают Parent.PaintControls.
И все сообщения им посылает родительский компонент путем вызова оконной функции, а не через SendMessage, поскольку hwnd у них нет.



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

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

Наверх




Память: 0.46 MB
Время: 0.006 c
1-1206427071
scat
2008-03-25 09:37
2009.01.18
Некорректное поведение унаследованной формы


2-1228217502
and123
2008-12-02 14:31
2009.01.18
Работа с TImage


15-1227266733
istok2
2008-11-21 14:25
2009.01.18
запуск exe под админом после ребута..


1-1205998806
partizan
2008-03-20 10:40
2009.01.18
WebBrowser выделение текста и копирование в буфер


2-1228292170
Alex_C
2008-12-03 11:16
2009.01.18
Простая библиотека для записи/воспроизведения звуковых файлов





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский