Форум: "Основная";
Текущий архив: 2002.09.23;
Скачать: [xml.tar.bz2];
ВнизОкна Найти похожие ветки
← →
silenser (2002-09-11 17:41) [0]Кто подскажет как сделать склеиваемые окна, которые можно разносить и сцеплять в единое целое (как в Winampe)
← →
Song (2002-09-11 17:44) [1]См. в справке dockable windows
← →
silenser (2002-09-12 13:52) [2]Извени не понял в какой справке
ничего не нашел можно подробнее
← →
Almaz (2002-09-12 23:48) [3]
> Song © (11.09.02 17:44)
> См. в справке dockable windows
Dockable windows тут абсолютно не причем.
> silenser © (11.09.02 17:41)
> Кто подскажет как сделать склеиваемые окна, которые можно
> разносить и сцеплять в единое целое (как в Winampe)
Один из вариантов решения таков: вам необходимо обрабатывать сообщение WM_MOVE получаемое всеми вашими "липкими" окнами. В обрабочике анализируйте расстояние между текущим окном и другими формами и если оно меньше заданного, то "склеивайте" эти окна. Примерно так, хотя код и требует доработки:
type
TForm1 = class(TForm)
...
private
procedure WMMove(var Message: TWMMove); message WM_MOVE;
end;
...
const
Delta = 20;
procedure TForm1.WMMove(var Message: TWMMove);
var
I: Integer;
F: TForm;
begin
for I := 0 to Screen.FormCount - 1 do
begin
F := Screen.Forms[I];
if (F.Visible) and (F <> Self) then
begin
// Это сделает "липким" левый край формы
if (Abs(Left - F.Left - F.Width) < Delta) and
(Top > F.Top) and (Top < F.Top + F.Height) then
Left := F.Left + F.Width;
end;
end;
inherited;
end;
Удачи.
← →
Nostradamus (2002-09-13 02:03) [4]Я вот юнит раз для себя написал, можешь посмотреть на
http://f-soft.km.ru/vcl_r.html
Там и пример есть.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.09.23;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c