Форум: "Начинающим";
Текущий архив: 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