Пересчет разметки после добавления элементов
От: IPv6 Россия http://www.lumarnia.com/
Дата: 27.02.07 10:40
Оценка:
Продолжая топик http://rsdn.ru/Forum/Message.aspx?mid=2363651
Автор: IPv6
Дата: 22.02.07
... еще одна проблема

добавляю в таблицу (точней в тег TD сразу после input элементов) кнопки через setElementHtml. после добавления делается
HTMLayoutUpdateElementEx(hRoot,REDRAW_NOW|RESET_STYLE_DEEP|MEASURE_DEEP);
все TD с полями ввода имеют flow=horizontal; border=1px

Однако все равно возникают ситуации как на этом рисунке:


у таблицы width=100%, т.е. ожидается что она раздвинется (свободное место там есть ), приняв в себя кнопки
при этом кнопка, выходящая за край *не* нажимается, при наводе курсора мышки даже хайлайта не возникает. что особенно неприятно.
кнопки, попавшие после добавления внутрь нажимаются нормально

===================
плюс еще один вопрос (повторюсь).... добавил свертывание отдельных блоков по behavior:collapsible-by-icon;
если открывать HTML через browser.exe то все ок, блоки скрываются/показываются.

если из моего приложения — все рисуется так же как и в browser.exe, но клик по иконке +/- do nothing.
Что нужно добавить в программу чтобы скрытие отрабатывало нормально?
===================
2C-smile: прошу прощения за обилие сообщений если бы можно как нибудь компенсировать затраты на поддержку HTMLLayout (ведь, как принято, бесплатное — без поддержка) был бы рад ответно помочь чем смогу. еще один респект за постоянную активность на этом форуме она даже выше чем на родном форуме htmlLayoutа
Re: Про collapsible_by_icon
От: a-lex Россия  
Дата: 27.02.07 12:37
Оценка: 1 (1) +1
Здравствуйте, IPv6, Вы писали:

IP>плюс еще один вопрос (повторюсь).... добавил свертывание отдельных блоков по behavior:collapsible-by-icon; если открывать HTML через browser.exe то все ок, блоки скрываются/показываются.

IP>если из моего приложения — все рисуется так же как и в browser.exe, но клик по иконке +/- do nothing.
IP>Что нужно добавить в программу чтобы скрытие отрабатывало нормально?
IP>===================

Я бы наивно предположил, что нужно добавить вышеназванный бихевиор (т.е. ...\HTMLayoutSDK\include\behaviors\behavior_collapsible_by_icon.cpp). Убедитесь, что collapsible_by_icon::collapsible_by_icon() (конструктор) отрабатывает при старте приложения. Если это так, проверьте, не поглощает ли у вас кто-нибудь on_mouse выше или ниже по иерархии.
Re[2]: Про collapsible_by_icon
От: IPv6 Россия http://www.lumarnia.com/
Дата: 27.02.07 15:15
Оценка:
Здравствуйте, a-lex, Вы писали:

AL>Здравствуйте, IPv6, Вы писали:


IP>>плюс еще один вопрос (повторюсь).... добавил свертывание отдельных блоков по behavior:collapsible-by-icon; если открывать HTML через browser.exe то все ок, блоки скрываются/показываются.

IP>>если из моего приложения — все рисуется так же как и в browser.exe, но клик по иконке +/- do nothing.
IP>>Что нужно добавить в программу чтобы скрытие отрабатывало нормально?
IP>>===================

AL>Я бы наивно предположил, что нужно добавить вышеназванный бихевиор (т.е. ...\HTMLayoutSDK\include\behaviors\behavior_collapsible_by_icon.cpp). Убедитесь, что collapsible_by_icon::collapsible_by_icon() (конструктор) отрабатывает при старте приложения. Если это так, проверьте, не поглощает ли у вас кто-нибудь on_mouse выше или ниже по иерархии.


спасибо за ответ. Видимо тут еще копаться и копаться...
— Добавил бихейвиор behavior_collapsible_by_icon.cpp. не работает но все ок, не падает
— добавил htmlayout::event_handler::element_proc(tag, he, evtg, prms); при HANDLE_INITIALIZATION (чтобы бихейвиор подцепился) и диалог начал рушится при старте сразу после ON_INITDIALOG, при этом стек путой, видмо что-то где-то трет!

Блин, знал бы делал на WTL приложение, нет вот опять MFC решился присобачить... за что и поплатился
Может кто знает в чем дело? Хоть руками скрытие эмулируй...
Re[3]: Про collapsible_by_icon
От: c-smile Канада http://terrainformatica.com
Дата: 27.02.07 23:30
Оценка: 6 (1)
Здравствуйте, IPv6, Вы писали:

IP>спасибо за ответ. Видимо тут еще копаться и копаться...

IP>- Добавил бихейвиор behavior_collapsible_by_icon.cpp. не работает но все ок, не падает
IP>- добавил htmlayout::event_handler::element_proc(tag, he, evtg, prms); при HANDLE_INITIALIZATION (чтобы бихейвиор подцепился) и диалог начал рушится при старте сразу после ON_INITDIALOG, при этом стек путой, видмо что-то где-то трет!

IP>Блин, знал бы делал на WTL приложение, нет вот опять MFC решился присобачить... за что и поплатился

IP>Может кто знает в чем дело? Хоть руками скрытие эмулируй...

Я не понял чего ты соорудил в результате.

Сделай следуюущее:

class CYourDialog: public ...,
public notification_handler <CYourDialog> // mix notification_handler in

+ добавь в проект behavior_collapsible_by_icon.cpp.

По идее больше ничего делать не надо.

Или точно воcпроизведи обработку HLN_ATTACH_BEHAVIOR из htmlayout_notifications.hpp у себя ибо это несложно:

      virtual LRESULT on_attach_behavior( LPNMHL_ATTACH_BEHAVIOR lpab )
      {
        htmlayout::behavior::handle(lpab);
        return 0;
      }
Re[4]: Про collapsible_by_icon
От: IPv6 Россия http://www.lumarnia.com/
Дата: 28.02.07 09:43
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Или точно воcпроизведи обработку HLN_ATTACH_BEHAVIOR из htmlayout_notifications.hpp у себя ибо это несложно:


Спасибо!!! пустив все через свой коллбек все заработало без костыликов. По поводу того что падало — в обработчике HANDLE_INITIALIZATION (приаттаченном через HTMLayoutWindowAttachEventHandler) пытался вызвать вот что

case HANDLE_INITIALIZATION:
{
    INITIALIZATION_PARAMS *p = (INITIALIZATION_PARAMS *)prms;
    if(p->cmd == BEHAVIOR_ATTACH){
        htmlayout::behavior::handle(p);
    }
}

после этого диалог падал с попорченным стеком

А что с недопересчетом размеров таблицы после добавления в TDшки элементов? Выглядит как баг
хотя его обойти несложно путем ручного задания размеров, но все же...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.