Грид: текст в ячейке с переносами по словам (word-wrap)
От: Hawk Россия  
Дата: 07.10.10 13:15
Оценка:
1. Есть грид, в котором в редактируемую ячейку надо вставить длинный текст с переносом строк по словам.

Код примерно такой:
<html>
<head>
<style>
        table#grid
        {
            width: *;
            behavior: grid column-resizer;
            overflow: auto; 
        }
        table#grid th
        {
            border: 1px solid gray;
        }
        table#grid tr td:nth-child(2)
        {
            behavior: edit;
        }
</style>
</head>
<body>
        <table #grid fixedrows="1">
            <tr>
                <th>Header 1</th><th>Header 2</th><th>Header 3</th>
            </tr>
            <tr>
                <td>Some text</td><td>Some very long text</td><td>Some text</td>
            </tr>
            <tr>
                <td>Some text</td><td>Some very long text</td><td>Some text</td>
            </tr>
        </table>
</body>
</html>


В идеале, поведение ячейки должно выглядеть так:
Набираем длинный текст. Размер edit-box'а по вертикали при этом можно автоматически подгонять под текст (наилучший вариант), а можно оставлять прежним. Когда ввод закончен, т.е. когда из ячейки ушел фокус ввода, текст отображается с переносами по словам, а размер ячейки при необходимости подгоняется под размер текста (если он уже подогнан во время ввода, то дополнительная подгонка не требуется).

Главная цель — чтобы весь длинный текст отобразился в ячейке, но так, чтобы не пришлось прокручивать окно по горизонтали.

Возможно ли сделать такое? И если возможно, то как?

2. Возможно ли реализовать ресайз строк по вертикали? Пытаюсь задать:
...
behavior: grid column-resizer row-resizer;
...

плюс
<table #grid fixedrows="1" fixedcolumns="1">
...

или
<table #grid fixedrows="1" fixedcols="1">
...

Не работает.
Re: Грид: текст в ячейке с переносами по словам (word-wrap)
От: c-smile Канада http://terrainformatica.com
Дата: 07.10.10 17:26
Оценка: 6 (1)
Здравствуйте, Hawk, Вы писали:

H>1. Есть грид, в котором в редактируемую ячейку надо вставить длинный текст с переносом строк по словам.


H>Возможно ли сделать такое? И если возможно, то как?


Как-то так?

<html>
<head>
<style>
        table#grid
        {
          width: *;
          height: *;
          behavior: grid column-resizer;
          overflow: auto; 
        }
        table#grid th
        {
          border: 1px solid gray;
        }
        table#grid th { width:*; }
        table#grid th:nth-child(2) { width:300px; }
        table#grid plaintext
        {
          width:*;
          height:min-intrinsic;
          overflow:none;
        }
</style>
</head>
<body>
        <table #grid fixedrows=1>
            <tr>
                <th>Header 1</th><th>Header 2</th><th>Header 3</th>
            </tr>
            <tr>
                <td>Some text</td><td><plaintext>Some very long text</plaintext></td><td>Some text</td>
            </tr>
            <tr>
                <td>Some text</td><td><plaintext>Some very long text</plaintext></td><td>Some text</td>
            </tr>
        </table>
</body>
</html>


H>2. Возможно ли реализовать ресайз строк по вертикали? Пытаюсь задать:


row-resizer в природе не существует на сегодняшний день. Как-то не было потребности.
Re[2]: Грид: текст в ячейке с переносами по словам (word-wra
От: c-smile Канада http://terrainformatica.com
Дата: 07.10.10 17:32
Оценка:
Здравствуйте, c-smile, Вы писали:

Можно еще max-height ограничить:


table#grid plaintext
        {
          width:*;
          height:min-intrinsic;
          max-height:300px;
          overflow-x:none;
          overflow-y:auto;
        }
Re[2]: Грид: текст в ячейке с переносами по словам (word-wra
От: Hawk Россия  
Дата: 08.10.10 15:33
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>row-resizer в природе не существует на сегодняшний день. Как-то не было потребности.


А можно ли реализовать его своими силами? Пытался найти, где реализован column-resizer (чтобы было от чего оттолкнуться), но нашел только этот закомментированный код:

// ...\HTMLayoutSDK_3.3.2.14\include\behaviors\behavior_grid.cpp
    /* Resizeable columns
    virtual BOOL handle_mouse  (HELEMENT he, MOUSE_PARAMS& params ) 
    {
       ...
    }

    virtual BOOL handle_mouse_move (HELEMENT he, MOUSE_PARAMS& params ) 
    {
       ...
    }
    */

Я так понимаю, это что-то устаревшее? Где тогда искать новый код?

Вообще, может что-то порекомендуешь насчет того, как сделать "кошерный" ресайз строк?
Re[3]: Грид: текст в ячейке с переносами по словам (word-wra
От: c-smile Канада http://terrainformatica.com
Дата: 08.10.10 17:24
Оценка:
Здравствуйте, Hawk, Вы писали:

Посмотри behavior_sizer.cpp — это наиболее близко к тому что тебе надо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.