Главная страница
    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
2-1228165884
aKor
2008-12-02 00:11
2009.01.18
TDBChart


2-1228517788
Ksander
2008-12-06 01:56
2009.01.18
Как взять данные с указателя?


15-1227101960
Mozart
2008-11-19 16:39
2009.01.18
Русский перевод фильмов bbc зло?


15-1227153907
Slider007
2008-11-20 07:05
2009.01.18
С днем рождения ! 20 ноября 2008 четверг


2-1228396508
Учащийся
2008-12-04 16:15
2009.01.18
TVarRec





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