Сплиттер в WFL, пример ОО дизайна

9 messages Options
Embed this post
Permalink
Dmitry Yakimov-2

Сплиттер в WFL, пример ОО дизайна

Reply Threaded More More options
Print post
Permalink
Привет,

Решил задачу создания сплиттера средствами WFL, смотрите здесь:  
CVS:~day\wfl\examples\splitter.f.

  Контроллер сплиттера включает в себя сам сплиттер и два окна-панели.
  И сплиттер и панели являются дочерними по отношению к окну на котором
  они находятся. Контроллер управляет сплиттером и панелями, изменяет
размеры
  панелей и положение сплиттера.

  Особенность в том что контроллер является окном и перехватывает сообщение
  WM_SIZE окна родителя для того чтобы при изменении окна родителя
соответсвенно
  изменить и размеры панелей.

Панели можно использовать свои, что и продемонстрировано в примере.
Сплиттеров может быть сколько угодно.

+ фикс hype на синтаксис obj-var obj-var [ obj-var * n ] prop


Best Regards,
Dmitry Yakimov


Andrey Cherezov

Re: Сплиттер в WFL, пример ОО дизайна

Reply Threaded More More options
Print post
Permalink
Добрый день, Dmitry Yakimov!

Ваше сообщение от 09.12.2006 18:01:
> Решил задачу создания сплиттера средствами WFL, смотрите здесь:  
> CVS:~day\wfl\examples\splitter.f.
>
>   Контроллер сплиттера включает в себя сам сплиттер и два окна-панели.
>   И сплиттер и панели являются дочерними по отношению к окну на котором
>   они находятся. Контроллер управляет сплиттером и панелями, изменяет
> размеры
>   панелей и положение сплиттера.
>  
А там другой принцип, нежели в spfwc? (как-то в последнем он более
привычно выглядит)
>
> Панели можно использовать свои, что и продемонстрировано в примере.
> Сплиттеров может быть сколько угодно.
>  
А как вставить другие контролы в панели?
Например, как в почт. клиентах - слева TreeView, в правой верхней панели
ListView,
в правой нижней HtmlView?
CPanel SUBCLASS ?


Dmitry Yakimov-2

Re: Сплиттер в WFL, пример ОО дизайна

Reply Threaded More More options
Print post
Permalink
Привет,

Да, сплиттер снова обновился.
> А там другой принцип, нежели в spfwc? (как-то в последнем он более
> привычно выглядит)
Ну вид это три строчки отрисовки :)

Можно очень легко создать класс CWindow SUBCLASS CMySplitter,
перегрузить в нем WM_PAINT и приаттачить к окну сплиттера методом
attach, ну а в WM_PAINT можно делать все.
Края CPanel можно менять сменой стиля прямо в init, так что это все
очень легко меняется без лишних движений.

И следует использовать winxp манифест, чтобы wfl контролы выглядели в
соответствии с winxp стилем.

Ага, посмотрел, в spfwc он оставляет артефакты.
Во вторых он требует много ручной работы.
14 строчек создания против 2-х в wfl.
В третьих чтобы сделать несколько сплиттеров надо сделать кучу ручной
работы, неудобно.
> А как вставить другие контролы в панели?
> Например, как в почт. клиентах - слева TreeView, в правой верхней панели
> ListView,
> в правой нижней HtmlView?
> CPanel SUBCLASS ?
>  
Можно так, да, и в WM_CREATE насоздавать каких угодно контролов.
И надо обработать WM_SIZE панели и изменять размеры контролов
соответственно изменению размера панели.

(вот в этом месте я планирю сделать умный framework автоматического
репозиционирования дочерних контролов с anchors, когда руки дойдут).

А можно и контрол установит панелью, если он будет один на панели.
Например TreeView - так будет вообще просто, и размеры будут ставиться
автоматически. Методы setLeftPane/setRightPane.

Это если контролов мало.
А если много то можно сделать modeless диалог, описать контролы в
диалоге, и диалог этот установить как дочерний к CPanel простым
SetParent. Или класс немодального дочернего диалога установить панелью -
методом setLeftPane например.

Вариантов много.


Andrey Cherezov wrote:

> Добрый день, Dmitry Yakimov!
>
> Ваше сообщение от 09.12.2006 18:01:
>  
>> Решил задачу создания сплиттера средствами WFL, смотрите здесь:  
>> CVS:~day\wfl\examples\splitter.f.
>>
>>   Контроллер сплиттера включает в себя сам сплиттер и два окна-панели.
>>   И сплиттер и панели являются дочерними по отношению к окну на котором
>>   они находятся. Контроллер управляет сплиттером и панелями, изменяет
>> размеры
>>   панелей и положение сплиттера.
>>  
>>    
> А там другой принцип, нежели в spfwc? (как-то в последнем он более
> привычно выглядит)
>  
>> Панели можно использовать свои, что и продемонстрировано в примере.
>> Сплиттеров может быть сколько угодно.
>>  
>>    
> А как вставить другие контролы в панели?
> Например, как в почт. клиентах - слева TreeView, в правой верхней панели
> ListView,
> в правой нижней HtmlView?
> CPanel SUBCLASS ?
>
>  

Best Regards,
Dmitry Yakimov


Dmitry Yakimov-2

Re: Сплиттер в WFL, пример ОО дизайна

Reply Threaded More More options
Print post
Permalink
In reply to this post by Andrey Cherezov
Привет,

cvs:\~day\wfl\examples\complexsplitter\*
Андрей, оно?

Никто не хочет на форте Mozilla TB переписать? ;)

Andrey Cherezov wrote:

> Добрый день, Dmitry Yakimov!
>
> Ваше сообщение от 09.12.2006 18:01:
>  
>> Решил задачу создания сплиттера средствами WFL, смотрите здесь:  
>> CVS:~day\wfl\examples\splitter.f.
>>
>>   Контроллер сплиттера включает в себя сам сплиттер и два окна-панели.
>>   И сплиттер и панели являются дочерними по отношению к окну на котором
>>   они находятся. Контроллер управляет сплиттером и панелями, изменяет
>> размеры
>>   панелей и положение сплиттера.
>>  
>>    
> А там другой принцип, нежели в spfwc? (как-то в последнем он более
> привычно выглядит)
>  
>> Панели можно использовать свои, что и продемонстрировано в примере.
>> Сплиттеров может быть сколько угодно.
>>  
>>    
Best Regards,
Dmitry Yakimov




Ruvim Pinka

Re: Сплиттер в WFL, пример ОО дизайна

Reply Threaded More More options
Print post
Permalink
Привет!

Заметил  OR! ( u addr -- )
а может лучше подобные имена давать по типу  "!OR"  ?
"!подтип" — сохранить как подтип.

Т.к. часто  "Имя!" значит записать нечто в объект Имя (e.g. SOURCE! ).
(А вообще, есть и исключения типа "С!" )

--
Ruvim
Dmitry Yakimov-2

Re: Сплиттер в WFL, пример ОО дизайна

Reply Threaded More More options
Print post
Permalink
Привет,

Ruvim Pinka wrote:
> Привет!
>
> Заметил  OR! ( u addr -- )
> а может лучше подобные имена давать по типу  "!OR"  ?
> "!подтип" — сохранить как подтип.
>  

Может быть, я делал по аналогии с +!


Best Regards,
Dmitry Yakimov


Ruvim Pinka

Re: Сплиттер в WFL, пример ОО дизайна

Reply Threaded More More options
Print post
Permalink
On 12/15/06, Dmitry Yakimov <[hidden email]> wrote:
> > Заметил  OR! ( u addr -- )
> > а может лучше подобные имена давать по типу  "!OR"  ?

> Может быть, я делал по аналогии с +!

Тогда тоже хорошо :)

--
Ruvim
Andrey Cherezov

Re: Сплиттер в WFL, пример ОО дизайна

Reply Threaded More More options
Print post
Permalink
In reply to this post by Dmitry Yakimov-2
Some javascript/style in this post has been disabled (why?)
Добрый день, Dmitry Yakimov!

Ваше сообщение от 15.12.2006 16:02:
cvs:\~day\wfl\examples\complexsplitter\*
Андрей, оно?
  
Оно! :)
Никто не хочет на форте Mozilla TB переписать? ;)
  
Тогда еще тулбар и меню добавить для полноты картины ;)
Будет удобно использовать этот пример в качестве пускача для таких приложений вместо HTA,
хотя, тогда еще и dragndrop'а не хватает (и для этой программы, и для TB):
http://echat.snop.ru/sklad2.png
Dmitry Yakimov-2

Re: Сплиттер в WFL, пример ОО дизайна

Reply Threaded More More options
Print post
Permalink
Привет,

Andrey Cherezov wrote:

> Добрый день, Dmitry Yakimov!
>
> Ваше сообщение от 15.12.2006 16:02:
>> cvs:\~day\wfl\examples\complexsplitter\*
>> Андрей, оно?
>>  
> Оно! :)
>> Никто не хочет на форте Mozilla TB переписать? ;)
>>  
> Тогда еще тулбар и меню добавить для полноты картины ;)
> Будет удобно использовать этот пример в качестве пускача для таких
> приложений вместо HTA,
> хотя, тогда еще и dragndrop'а не хватает (и для этой программы, и для TB):
> http://echat.snop.ru/sklad2.png 

Меню в WFL делается тривиально, в форт стиле, тулбар для WFL я планирую
сделать с поддержкой docking.
drag'n'drop тоже можно глянуть, по крайней мере сделать класс для поддержки.

Best Regards,
Dmitry Yakimov