-
происходит перемещение или изменение размера TPanel на форме?
Т.е.: Есть форма, на ней лежат 2 панельки, надо отловить момент, когда первая панелька станет Visible=False и сделать действие над второй панелькой.
Вопрос в том, какое сообщение получают контролы при таком событии? WM_PAINT и WM_SIZE пробовал; WM_PAINT отрабатывается только если форму заставить перерисоваться командой Repaint или что-то над ней пронести, чтобы она сама перерисовалась. Перерыл все сообщения - вышло так: форма получает сообщения 45131 и 33 (что они значат - я не нашел), но при этом если повесить обработчик на любое из них, он не срабатывает.
-
WM_SHOWWINDOW, WM_SIZE
-
Не помогло.
-
WM_WINDOWPOSCHANGING помогло вроде, но как мне получить Handle элемента, который был изменен? В какой переменной типа Msg: TMessage содержится это значение?
-
Ну тогда тряси бубен.
Ибо справка неумолимо твердит, что
The WM_SHOWWINDOW message is sent to a window when the window is about to be hidden or shown
-
WM_WINDOWPOSCHANGING у формы?
-
var TMyForm=class(TForm [...] protected procedure AlertVisibility(var msg: TMessage); message WM_WINDOWPOSCHANGING; [...] end;
вот как-то так
Видимо WM_SHOWWINDOW обрабатывается только для формы, а не для контролов на ней...
-
> Видимо WM_SHOWWINDOW обрабатывается только для формы, а > не для контролов на ней...
а как ты пробовал для контролов?
-
> WM_SHOWWINDOW обрабатывается только для формы, а не для > контролов на ней
Кому послано, тот и обрабатывает. С какого перепугу оно будет послано форме, если ее видимость изменилась ? Изменилась ведь видимость окна панели, а не окна формы ..
-
> если ее видимость изменилась
если ее видимость не изменилась
-
> pushkin42 © (07.11.08 13:02) [6]
вспоминается анекдот про мужика который потерял в одном месте ключи, а искал их в другом месте под фонарем, т.к. там светлее.
Панель - это окно и сообщения приходят ей, а не тому окну-форме, на которой она(панель) лежит. Вот и лови их в оконной процедуре панели, а не формы.
|