Страница 1 из 1

Добавлено: 16 Июнь 2005, 10:07
Гость
Уважаемые господа! Подскажите – кто чем может!
Как можно совместить в одном проекте ресайзинг окна программы и плавающие ToolBar’ы?
C55H, ABC
Насколько я разобрался на сегодняшний момент с этим, то выходит, значит, так:
- Плавающие тулбары работают только с Frame окном. С простым окном они не работают?
- Ресайзинг фрэйм окна не приводит к аналагичному ресайзингу дочернего окна, в нем находящегося?
- Если установить у дочернего окна тип «Resizable», то 100% появляется его заголовок (синяя полоса), а это очень не нужно!!! Если указать данный тип иным, то заголовок пропадает, но окно не ресайзится.

Навскидку вижу возможным решение в следующем русле:
- Делаю дочернее окно (а оно одно внутри фрэйма) типа Дубле и вешаю на него в Extension какой-нибудь нужный шаблон (класс) рессайзера, который бы управлялся программно.
- В Main Frame’е ставлю галочку Immediate и отлавливаю событие Size (Sized). Определяю в каком направлении (по вертикали, по горизонтали или и то и иное), и по нему отправляю в дочернее окно Post(Event….
- В дочернем окне принимаю данное событие и запускаю ресайзинг + 1
- Все, по идее (теоретически) все должно работать – все окна в проекте резайзятся, плавающие тулбары «отлипают» и «прилипают» куда и как нужно.
Вопросы:
- Не допустил ли я ошибку в рассуждениях?
- Имеется ли какой-нибудь (очень желательно - фришный) шаблон (класс) по программному ресайзингу окон?
- Может все делается намного проще (сложнее)? Если проще, то как?

С глубоким уважением
=NewUser=
Написал: NewUser(217)

Добавлено: 16 Июнь 2005, 18:55
Andrew Listiev
ИМХО, надо копать в сторону Docked Window. :rolleyes:
Написал: Andrew Listiev(202)

Добавлено: 17 Июнь 2005, 0:01
Гость
Docked Window? Это что? Свойства окон? Или это название шаблона?
У меня плавающие панели отлично работают с application.
Так же отлично работает рессайзинг как application'a, так и дочернего window'a. Но… по отдельности.
Все-таки склонился в сторону application'a. А дочернее окно надо будет как-то рессайзить, при изменении фрэйма. Смотрел как это сделано в Nero5. Сначала рессайзица (пользователем) фрэйм, отпускается (мышка), и только потом программно габаритятся все окна внутри фрэйма. Мне не очень понравилось. Было бы лучше сделать все это динамически. Только вопрос: как?

Написал: NewUser(217)

Добавлено: 17 Июнь 2005, 10:21
Andrew Listiev
Да это свойство, окон. В С55 уже есть. Применяется в связке со свойством окна Toolbox и открытием окна с указанием родительского окна. И в конечном счете получаем тулбар-прилипалу. В поставке Клары есть пример реализации. А по поводу реализации ресайза тулбаров, мне видиться только "ручками" :smirk:
Написал: Andrew Listiev(202)

Добавлено: 17 Июнь 2005, 11:35
Гость
Хорошо, с этим (тулбарами-прилипалами), можно сказать, я уже почти что разобрался. А вот вопрос по поводу рессайзинга дочернего окна, которое находится в обрамлении Main Frame, при изменении размеров последнего – так и остается злободневно-открытым! Не уж-то никто не делал ничего подобного?
С уважением
=NewUser=
Написал: NewUser(217)

Добавлено: 17 Июнь 2005, 14:12
Andrew Listiev
Не почему? Можно. Только тебе надо знать поведение, которое ты хочешь добиться от дочернего окна.

Надо тебе покопать в направлении "Управлении контролами и окном из другого окна". В качестве отправной точки:

GlobalWindow1 &Window
GlobalWindow1Control1 Long

Open(Window)
GlobalWindow1 &= Window
GlobalWindow1Control1 = ?ListBox

Из другого окна:
GlobalWindow1 $ GlobalWindow1Control1{Prop:XPos} = 10
GlobalWindow1 $ GlobalWindow1Control1{Prop:YPos} = 20

и т.д. ;)
Написал: Andrew Listiev(202)