Главная страница
    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-1228291866
b@v
2008-12-03 11:11
2009.01.18
MySQL &amp; Delphi


15-1226873370
wl
2008-11-17 01:09
2009.01.18
сниму коннату в москве или области


2-1228132325
Arinyshka
2008-12-01 14:52
2009.01.18
динамическое создание вычисляемого поля AdoQuery


4-1204580990
BBCHa
2008-03-04 00:49
2009.01.18
Как изменить системное время


2-1228294295
NieL
2008-12-03 11:51
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский