дерево на htmllyaout
От: elmm_ Украина http://herocraft.com
Дата: 28.03.07 21:51
Оценка:
Примеряюсь к htmllayout интересуте как сделать дерево на подобе как у вас в blocknote сделанно (собственно мне для тех же целей и нужо — броузиться по дискам, папкам).
Я пока что не очень понимаю концепцию либы, а примеры весьма скудны — из деревьев все статические и без иконок.
И ещё вопрос по примеру — splitters-and-trees.htm — там кроме сплиттеров фиксированных что-то должно отображаться?
C.E.O. HeroCraft Ukraine — fun on the run.
Re: дерево на htmllyaout
От: c-smile Канада http://terrainformatica.com
Дата: 29.03.07 17:52
Оценка:
Здравствуйте, elmm_, Вы писали:

_>Примеряюсь к htmllayout интересуте как сделать дерево на подобе как у вас в blocknote сделанно (собственно мне для тех же целей и нужо — броузиться по дискам, папкам).

_>Я пока что не очень понимаю концепцию либы, а примеры весьма скудны — из деревьев все статические и без иконок.
_>И ещё вопрос по примеру — splitters-and-trees.htm — там кроме сплиттеров фиксированных что-то должно отображаться?

#
PS: задал вопрос на RSDN и тишина. Может здесь кто чего ответит?
Posted 4 hours ago # 62.221.44.80 Edit Delete
#


zverok
Member

ENG: here is trees creation with HTMLayout is spoken about. No concrete solution, still.

RU:
1. Тут в принципе народ со всего мира тусуется, поэтому предпочтительно или на аглицком спрашивать, или хотя бы писать дайджест сообщения. Соответственно, ответы от автора тоже будут на английском (и этот тоже был бы, но мне ужасно лень думать
2. Автор библиотеки живет в канаде, т.е. в данный момент у него раннее-раннее утро. На вопросы, как правило, отвечает именно он. (в принципе, на RSDN'е часто отвечают и другие, но только о тех вопросах, с которыми уже сталкивались практически).
3. Основная концепция библиотеки — это создание GUI на HTML+CSS — наборе языков, на которых обычно разрабатывают вебсайты. Соответственно, если возникнет желание серьезно работать с библиотекой, желательно об этих концепциях иметь представление.
4. В HTML есть только несколько самых "базовых" контролов (список, поле ввода, выпадающий список и т.п.). Остальные "контролы" создаются путем создания обычных HTML элементов и применения к ним различных стилей. Опыта создания элемента "дерево, аутентичное windows'овскому, лично у меня нету". Но могу предположить, что это решается созданием списка, в котором каждому "файлу" соответствует option, "папке" — optgroup или options, в которых вложены эти option, а затем аккуратным натягиванием на него соответствующих стилей. (смотри пример forms/tree-view-checks.htm — там дерево с чекбоксами и иконками)
5. динамическое наполнение контентом происходит путем создания и вставки новых элементов DOM (Document Object Model), или генерации и установки внутреннего HTML-кода дерева.

Hope this helps.

ЗЫ. емнип, в HTMLayout был специальный метод для извлечения иконок, которые система сопоставляет типам файлов.

Re[2]: дерево на htmllyaout
От: elmm_ Украина http://herocraft.com
Дата: 30.03.07 20:42
Оценка:
Извиняюсь за некоректно заданный вопрос. Спосибо за ответ.
Посмотрел статью на код проджекте — более менее уяснил ситуацию.

Хотел поинтересоваться на сколько быстр и лёгок htmlayout? Пошерстив форум этот я понял что вы являетесь создателем программы http://blocknote.net/ — поэтому хотел спросить вас как автора — вы использывали там htmlayout? Если использовали — то как делали дерево? Встраивали в хтмл свой контрол или динамически генерили код с <option>?

Жаль что нет ни одного "реального" примера где было бы отображено взаимодействие программы с htmlayout — посему и возникает столько много глупых вопросов, когда начинаешь с ним разбираться.


Здравствуйте, c-smile, Вы писали:
CS>1. Тут в принципе народ со всего мира тусуется, поэтому предпочтительно или на аглицком спрашивать, или хотя бы писать дайджест сообщения. Соответственно, ответы от автора тоже будут на английском (и этот тоже был бы, но мне ужасно лень думать
CS>2. Автор библиотеки живет в канаде, т.е. в данный момент у него раннее-раннее утро. На вопросы, как правило, отвечает именно он. (в принципе, на RSDN'е часто отвечают и другие, но только о тех вопросах, с которыми уже сталкивались практически).
CS>3. Основная концепция библиотеки — это создание GUI на HTML+CSS — наборе языков, на которых обычно разрабатывают вебсайты. Соответственно, если возникнет желание серьезно работать с библиотекой, желательно об этих концепциях иметь представление.
CS>4. В HTML есть только несколько самых "базовых" контролов (список, поле ввода, выпадающий список и т.п.). Остальные "контролы" создаются путем создания обычных HTML элементов и применения к ним различных стилей. Опыта создания элемента "дерево, аутентичное windows'овскому, лично у меня нету". Но могу предположить, что это решается созданием списка, в котором каждому "файлу" соответствует option, "папке" — optgroup или options, в которых вложены эти option, а затем аккуратным натягиванием на него соответствующих стилей. (смотри пример forms/tree-view-checks.htm — там дерево с чекбоксами и иконками)
CS>5. динамическое наполнение контентом происходит путем создания и вставки новых элементов DOM (Document Object Model), или генерации и установки внутреннего HTML-кода дерева.

CS>[/q]
C.E.O. HeroCraft Ukraine — fun on the run.
Re[3]: дерево на htmllyaout
От: elmm_ Украина http://herocraft.com
Дата: 30.03.07 21:40
Оценка:
Здравствуйте, elmm_, Вы писали:

Похоже я стянул какое-то древнее SDK с кодпроджекта — в том что скачал достаточно интересных примеров.
Отпадает ещё ни мало глупых вопросов

_>Жаль что нет ни одного "реального" примера где было бы отображено взаимодействие программы с htmlayout — посему и возникает столько много глупых вопросов, когда начинаешь с ним разбираться.
C.E.O. HeroCraft Ukraine — fun on the run.
Re[4]: дерево на htmllyaout
От: c-smile Канада http://terrainformatica.com
Дата: 31.03.07 03:30
Оценка:
Здравствуйте, elmm_, Вы писали:

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


_>Похоже я стянул какое-то древнее SDK с кодпроджекта — в том что скачал достаточно интересных примеров.

_>Отпадает ещё ни мало глупых вопросов

_>>Жаль что нет ни одного "реального" примера где было бы отображено взаимодействие программы с htmlayout — посему и возникает столько много глупых вопросов, когда начинаешь с ним разбираться.


Да, на codeproject статья про htmlayout уже морально устарела.

В blocknote.net используется htmlayout v.1.0. Актуальная версия же 3.2.
Re[5]: дерево на htmllyaout
От: elmm_ Украина http://herocraft.com
Дата: 01.04.07 13:14
Оценка:
Здравствуйте, c-smile, Вы писали:

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


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


_>>Похоже я стянул какое-то древнее SDK с кодпроджекта — в том что скачал достаточно интересных примеров.

_>>Отпадает ещё ни мало глупых вопросов

_>>>Жаль что нет ни одного "реального" примера где было бы отображено взаимодействие программы с htmlayout — посему и возникает столько много глупых вопросов, когда начинаешь с ним разбираться.


CS>Да, на codeproject статья про htmlayout уже морально устарела.


CS>В blocknote.net используется htmlayout v.1.0. Актуальная версия же 3.2.


Решил задать вопрос в этом топике, коль пытаюсь прикрутить дерево своё к примеру.
Взял mfc_browse перекинул туда из wizard bool HasAttr(HELEMENT he, LPCSTR attrName) и прочии функции для работы с атрибутами.
Взял из старого SDK OnCreateControl (зачем его из нового изнового из mfc примера выкинли? — это перешшло в behaviors?), подправил.
Падает на HasAttr — при вызове

      const char* get_attribute_name( unsigned int n ) const 
      { 
        LPCSTR lpc = 0;
        HTMLayoutGetNthAttribute(he, n, &lpc, 0);//<< Вот здесь валиться с Acces Violation
        return lpc;
      }


Для тестирования использую splitters-and-trees.htm — он падает на нулевом атрибуте, который я уже запрашивал по имени.
C.E.O. HeroCraft Ukraine — fun on the run.
Re[6]: дерево на htmllyaout
От: c-smile Канада http://terrainformatica.com
Дата: 02.04.07 05:53
Оценка:
Здравствуйте, elmm_, Вы писали:

Что значит "Падает" ?
Re[7]: дерево на htmllyaout
От: elmm_ Украина http://herocraft.com
Дата: 02.04.07 13:00
Оценка:
Здравствуйте, c-smile, Вы писали:

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


CS>Что значит "Падает" ?


В коментариях написал — Acces Violation Reading Location xxxx — адрес по которому HTMLayoutGetNthAttribute попытался обратится я не помню — вечером (по GMT +2) посмотрю и точнее напишу.
Обрщение шло к нулевому атрибуту.
Вызывается эта функция для элемента <widget type=treeview width=100% height=100%> при загрузки splitters-and-trees.htm.

Если коментирую вызов get_attribute_name и не пытаюсь получить дополнительные атрибуты дерева — то имею нормально работающий пример со сплитерами и деревьями.
C.E.O. HeroCraft Ukraine — fun on the run.
Re[8]: дерево на htmllyaout
От: c-smile Канада http://terrainformatica.com
Дата: 02.04.07 16:31
Оценка:
Здравствуйте, elmm_, Вы писали:

_>Здравствуйте, c-smile, Вы писали:


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


CS>>Что значит "Падает" ?


_>В коментариях написал — Acces Violation Reading Location xxxx — адрес по которому HTMLayoutGetNthAttribute попытался обратится я не помню — вечером (по GMT +2) посмотрю и точнее напишу.

_>Обрщение шло к нулевому атрибуту.
_>Вызывается эта функция для элемента <widget type=treeview width=100% height=100%> при загрузки splitters-and-trees.htm.

_>Если коментирую вызов get_attribute_name и не пытаюсь получить дополнительные атрибуты дерева — то имею нормально работающий пример со сплитерами и деревьями.


Пытаюсь воспроизвести так:

htmlayout::dom::element w = root.find_first("widget");
const char* s = w.get_attribute_name(0);


Все работает.

Какая версия htmlayout.dll?
Re[9]: дерево на htmllyaout
От: elmm_ Украина http://herocraft.com
Дата: 02.04.07 21:29
Оценка:
Здравствуйте, c-smile, Вы писали:

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


_>>Здравствуйте, c-smile, Вы писали:


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


CS>>>Что значит "Падает" ?


_>>В коментариях написал — Acces Violation Reading Location xxxx — адрес по которому HTMLayoutGetNthAttribute попытался обратится я не помню — вечером (по GMT +2) посмотрю и точнее напишу.

_>>Обрщение шло к нулевому атрибуту.
_>>Вызывается эта функция для элемента <widget type=treeview width=100% height=100%> при загрузки splitters-and-trees.htm.

_>>Если коментирую вызов get_attribute_name и не пытаюсь получить дополнительные атрибуты дерева — то имею нормально работающий пример со сплитерами и деревьями.


CS>Пытаюсь воспроизвести так:


CS>
CS>htmlayout::dom::element w = root.find_first("widget");
CS>const char* s = w.get_attribute_name(0);
CS>


CS>Все работает.


CS>Какая версия htmlayout.dll?


Версия — 3,2,0,1

Код взят из старого примера с код проджекта и вставлен в mfc пример из новго SDK (скачан с вашего сайта на этих выходных).


bool CLayoutView::HasAttr(HELEMENT he, LPCSTR attrName)
{
    htmlayout::dom::element el = he;
    for(unsigned int i = 0; i < el.get_attribute_count(); ++i)
    {
        if(stricmp(el.get_attribute_name(i),attrName) == 0)
            return true;
    }
    return false;
}

LRESULT CLayoutView::OnCreateControl(LPNMHL_CREATE_CONTROL pnmCreateCtl)
{
    LRESULT    result = 0;

    CString type = GetAttr(pnmCreateCtl->helement, TEXT("type"));

    //WARNING: Assuming that InitCommonControls has been called already!
    int style = WS_CHILD | WS_TABSTOP | WS_VISIBLE;

    LPCTSTR clsname = 0;
    if(type.Compare(TEXT("datetime")) == 0)
        clsname = DATETIMEPICK_CLASS;
    else if(type.Compare(TEXT("calendar")) == 0)
        clsname = MONTHCAL_CLASS;
    else if(type.Compare(TEXT("ipaddress")) == 0)
        clsname = WC_IPADDRESS;
    else if(type.Compare(TEXT("treeview")) == 0)
    {
        clsname = WC_TREEVIEW;

//Провоцирует Unhandled exception:
        if(HasAttr(pnmCreateCtl,TEXT("haslines")))
            style |= TVS_HASLINES;
        if(HasAttr(pnmCreateCtl,TEXT("linesatroot")))
            style |= TVS_LINESATROOT;
        if(HasAttr(pnmCreateCtl,TEXT("hasbuttons")))
            style |= TVS_HASBUTTONS;
        if(HasAttr(pnmCreateCtl,TEXT("editlabels")))
            style |= TVS_EDITLABELS;
        // etc...
    }
    else if(type.Compare(TEXT("listview")) == 0)
    {
        clsname = WC_LISTVIEW;
        // etc...
    }
    else 
        return result; 


//.... дальше идёт создание контрола



Что может справоцировать такое поведение? Что я испортил?

Выдаёт такую ошибуку: Unhandled exception at 0x10014ba0 in blabla.exe: 0xC0000005: Access violation reading location 0x4108fe50.

при вызове HTMLayoutGetNthAttribute в
      const char* get_attribute_name( unsigned int n ) const 
      { 
        LPCSTR lpc = 0;
        HTMLayoutGetNthAttribute(he, n, &lpc, 0);
        return lpc;
      }
C.E.O. HeroCraft Ukraine — fun on the run.
Re[10]: дерево на htmllyaout
От: c-smile Канада http://terrainformatica.com
Дата: 02.04.07 21:44
Оценка: 3 (1)
Здравствуйте, elmm_, Вы писали:

_>
_>bool CLayoutView::HasAttr(HELEMENT he, LPCSTR attrName)

_>        if(HasAttr(pnmCreateCtl,TEXT("haslines")))
_>            style |= TVS_HASLINES;
_>



_>Что может справоцировать такое поведение? Что я испортил?


Использование pnmCreateCtl вместо HELEMENT
Re: дерево на htmllyaout
От: 0xMeHi Украина  
Дата: 26.11.07 22:51
Оценка:
Здравствуйте, elmm_, Вы писали:

_>Примеряюсь к htmllayout интересуте как сделать дерево на подобе как у вас в blocknote сделанно (собственно мне для тех же целей и нужо — броузиться по дискам, папкам).

_>Я пока что не очень понимаю концепцию либы, а примеры весьма скудны — из деревьев все статические и без иконок.
_>И ещё вопрос по примеру — splitters-and-trees.htm — там кроме сплиттеров фиксированных что-то должно отображаться?

то что удалось кому-н. сделать дерево дисков, файлов и папок?
хоть подскажите куда копать?
Re[2]: дерево на htmllyaout
От: c-smile Канада http://terrainformatica.com
Дата: 26.11.07 23:58
Оценка: 2 (1)
Здравствуйте, 0xMeHi, Вы писали:

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


_>>Примеряюсь к htmllayout интересуте как сделать дерево на подобе как у вас в blocknote сделанно (собственно мне для тех же целей и нужо — броузиться по дискам, папкам).

_>>Я пока что не очень понимаю концепцию либы, а примеры весьма скудны — из деревьев все статические и без иконок.
_>>И ещё вопрос по примеру — splitters-and-trees.htm — там кроме сплиттеров фиксированных что-то должно отображаться?

MH>то что удалось кому-н. сделать дерево дисков, файлов и папок?

MH>хоть подскажите куда копать?

Берем пример tree-view.htm и совмещаем его с shell-icon.htm
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.