![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Splitter при установке св-ва Panel3.Visible:=true отказывается [D7, WinXP]
Michael5 © (2005-09-09 21:39:00)работать. Помогите разобраться!
Суть такова: создаю форму, компоненты на ней с такими свойствами:
Panel1.Align:=alTop;
Splitter1.Align:=alTop;
Panel2.Align:=alClient;
Запускаю программу.
При этом я могу сдвигать сплиттер до самого верха или низа.
А теперь мне нужно, чтобы при смещении сплиттера до самого верха у меня становилась видна еще одна панель. Я это пытаюсь сделать следующим образом. Создаю на форме в любом месте Panel3 (Visible:=false), и делаю обработчик перемещения сплиттера:
procedure TForm1.Splitter1Moved(Sender: TObject);
begin
if Splitter1.Top=0 then
panel3.Visible:=true;
end;
При этом, если это условие срабатывает, сплиттер клинит - он больше не сдвигается с места.
Установка свойства panel3.Visible в true во время выполнения программы при промежуточных положениях сплиттера такого эффекта не дает - он продолжает работать.
Помогите разобраться пожалуйста!
DesWind (2005-09-09 23:10:00) [1]Не, я не о том. dX,dY по времени, мышки может превышать скорость отправки сообщений... Т.е. щас (4,4), а следующее (10,10). Но это так... Офф. топ. Пятница, дома, один... ))))
Michael5 (2005-09-09 22:59:00) [2]
> Как мне кажется (хоть и креститься надо, но поболтать хочеться)
> тогда надо учитыать скорость движения мыши, может не сработать.
Не, я так не думаю - OnMoved - это похоже на прошедшее время. По крайней мере, там явно идет обработка до или после. А уж с какой скоростью ты туда приехал - их это не интересует :)
DesWind (2005-09-09 22:46:00) [3]Как мне кажется (хоть и креститься надо, но поболтать хочеться) тогда надо учитыать скорость движения мыши, может не сработать.
Michael5 (2005-09-09 22:42:00) [4]Легко. И туда, и сюда...
Нашел связь Splitter1.Top:=50 с "оживлением" сплитера. Эта величина должна быть больше высоты сплиттера (по умолчанию она равна 3, так что как минимум Splitter1.Top:=4)
DesWind (2005-09-09 22:31:00) [5]А alCustom?
Michael5 (2005-09-09 22:21:00) [6]alNone, или alBottom; находится на самой форме Form1, или на панели, к примеру, на Panel2 - ошибка, и лечение действительны для всех случаев
Michael5 (2005-09-09 22:13:00) [7]Хм, не разобрался, но стало работать...
Видоизменил код обработчика:
procedure TForm1.Splitter1Moved(Sender: TObject);
begin
if Splitter1.Top=0 then begin
Splitter1.Top:=50;
panel3.Visible:=true;
end;
Причем эта строка в общем-то не срабатывает, Top все равно нулю остается равен, и сплиттер на том же месте, однако живой... :)
Ничего не понимаю
DesWind (2005-09-09 22:13:00) [8]3-я панель с какими свойствами выравнивания (если вторая alClient)?