HTMLayout - Добавление вложенных элементов после Move
От: zaichatki  
Дата: 16.11.12 13:11
Оценка:
Здравствуйте, какие-то глюки при добавлении элементов после перемещения контейнера через HTMLayoutMoveElement.
Тестовый HTML — http://files.rsdn.ru/97436/flow_groups.htm

Код (извините, обёртка на C#, в коментариях написал в какие вызовы раскрывается):
var container = view_.FindById("ccc");  

//container.Location = new Point(2, 2); 
// HTMLayoutMoveElement(Handle, value.X, value.Y)

for (int i = 0; i < 10; ++i)
{
    var item = new HtmElement("div", "tt") { Class = "item" }; 
    // HTMLayoutCreateElement(tagName, value
    // HTMLayoutSetAttributeByName(Handle, name, value

    container.Insert(item);
    // HTMLayoutInsertElement(node.Handle, Handle, Int32.MaxValue)
}


После выполнения такого кода всё отлично:


Теперь если раскомментить строку с присваиванием Location (HTMLayoutMoveElement). Получается такое:


Также глюк возникает, но немного по-другому если добавлять сами группы динамически:
view_.FindById("ggg").Delete(); // удалаяем существующую группу
var group = new HtmElement("div", "aaaa aaaa") { Class = "group" };
view_.Body.Insert(group);
var container = new HtmElement("div") { Class = "container" };
group.Insert(container);

//container.Location = new Point(2, 2);
// HTMLayoutMoveElement(Handle, value.X, value.Y)

for (int i = 0; i < 10; ++i)
{
    var item = new HtmElement("div", "tt") { Class = "item" };
    container.Insert(item);
}

Всё отлично:


Но если раскомментить строчку с изменением Location (HTMLayoutMoveElement):


Как побороть? Меня больше всего последний вариант интересует. Может быть достаточно после Move что-нибудь дёрнуть?
Re: HTMLayout - Добавление вложенных элементов после Move
От: c-smile Канада http://terrainformatica.com
Дата: 16.11.12 17:16
Оценка:
Здравствуйте, zaichatki, Вы писали:

HTMLayoutMoveElement имеет ограниченное применение, фича сделана для drag-n-drop в основном.

В самом начале HTMLayoutMoveElement и HTMLayoutMoveElementEx делают snapshot размеров элемента и в ходе
move предполагается что структура элемента не меняется.

Т.е. если надо что-то такое делать то сначала изменяй DOM а уже потом делай move.
Ну или старым добрым способом el.style.left = ... el.style.top = ...
Re[2]: HTMLayout - Добавление вложенных элементов после Move
От: zaichatki  
Дата: 19.11.12 13:33
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Ну или старым добрым способом el.style.left = ... el.style.top = ...

Действительно, можно просто так
В одной из соседних веток move упоминался, стал пробовать — наткнулся на такие глюки.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.