Поженить плавающие панели с ресайзингом

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

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

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

С глубоким уважением
=NewUser=
Написал: NewUser(217)
Аватара пользователя
Andrew Listiev
Активист
Сообщения: 166
Зарегистрирован: 07 Июль 2005, 11:16
Откуда: Латвия, Рига

Сообщение Andrew Listiev »

ИМХО, надо копать в сторону Docked Window. :rolleyes:
Написал: Andrew Listiev(202)
Гость

Сообщение Гость »

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

Написал: NewUser(217)
Аватара пользователя
Andrew Listiev
Активист
Сообщения: 166
Зарегистрирован: 07 Июль 2005, 11:16
Откуда: Латвия, Рига

Сообщение Andrew Listiev »

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

Сообщение Гость »

Хорошо, с этим (тулбарами-прилипалами), можно сказать, я уже почти что разобрался. А вот вопрос по поводу рессайзинга дочернего окна, которое находится в обрамлении Main Frame, при изменении размеров последнего – так и остается злободневно-открытым! Не уж-то никто не делал ничего подобного?
С уважением
=NewUser=
Написал: NewUser(217)
Аватара пользователя
Andrew Listiev
Активист
Сообщения: 166
Зарегистрирован: 07 Июль 2005, 11:16
Откуда: Латвия, Рига

Сообщение 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)
Ответить