T@rEn |
Отправлено: 21.12.2006, 10:42 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 18
|
Здравствуйте !!!
Помогите пожалуйста !!!
В ячейки грида надо вводить многострочные данные в виде:
____________
Слово1
слово2
слово3
____________
Есть ли в гриде свойство, подобное Wordwrap?
Можно ли это сделать в гриде, и если нельзя то где можно?
Заранее благодарен!!! |
|
olegenty |
Отправлено: 21.12.2006, 10:47 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
В гриде это сделать можно, но с ограничениями. Этот грид называется TDBGridEh, он легко позволяет показывать многострочный текст. А ограничение следующее: фиксированная высота ячейки. Три строки — так все ячейки три строки. Если же нужен эффект типа таблицы Word (высота ячейки варьируется в зависимости от содержимого), то лично я знаю только один компонент, с помощью которого это легко можно сделать: TVirtualStringTree
|
|
T@rEn |
Отправлено: 21.12.2006, 10:59 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 18
|
Спасибо !!!
А где его (TVirtualStringTree) приобрести можно? |
|
olegenty |
Отправлено: 21.12.2006, 11:24 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
http://www.soft-gems.net/VirtualTreeview/
бесплатен
а тут на пальцах прикинуто, как с ним работать:
http://forum.vingrad.ru/index.php?showtopic=97620
|
|
Doga |
Отправлено: 21.12.2006, 11:28 |
|
Мастер участка
Группа: Участник
Сообщений: 575
|
Вообще то, вертикальные размеры ячейки вычислить не так уж и сложно. Например вот так:
CODE |
for (int k = 0; k < Grid->RowCount; k++)
{
RECT CellRect2 = ...; //Координаты и размеры ячейки
AnsiString CellText = ...; //Текст ячейки
Grid->RowHeights[k] = 7 + DrawText(Grid->Canvas->Handle, CellText.c_str(), CellText.Length(), &CellRect2, DT_CALCRECT | DT_LEFT | DT_VCENTER | DT_WORDBREAK | DT_EXPANDTABS | DT_NOPREFIX | DT_END_ELLIPSIS);
}
|
Рисовать текст можно той же DrawText в событии OnDrawCell.
У RxDrawGrid есть метод DrawMultiline.
Что же касается TVirtualStringTree, то есть у него пара неприятных недостатков. В режиме грида он не может перемещать сфокусированную ячейку вдоль строки и нет фиксированных колонок . Но, в остальном он, конечно, супер
Отредактировано Doga — 21.12.2006, 11:49
|
|
olegenty |
Отправлено: 21.12.2006, 11:37 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
чего он куда не может перемещать в режиме грида??? у меня все везде перемещается и редактируется прямо по месту именно в режиме грида. т.е. имею полноценный грид. вот про фиксированные согласен. однако, я согласен с этим мириться за остальные другие плюсы: компонент абсолютно беспредельный
|
|
olegenty |
Отправлено: 21.12.2006, 11:40 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
да, а ещё вот тут пример от Doga:
http://www.rxlib.ru/forums/index.php?s=64a...virtualtreeview
ценен тем, что те, кто ещё не работал с Shell — научатся. и ценен подходом к работе с TVirtualStringTree посредством класса-оператора. наглядно, просто, понятно.
|
|
Doga |
Отправлено: 21.12.2006, 11:45 |
|
Мастер участка
Группа: Участник
Сообщений: 575
|
2olegenty
Возможно я тут не доглядел, каюсь
Да и фиксированные колонки самому нарисовать можно вообще то...
Отредактировано Doga — 21.12.2006, 11:48
|
|
olegenty |
Отправлено: 21.12.2006, 11:52 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
кстати, фиксацию можно сымитировать: делать колонки Visible=false при определенных условиях, а у юзера от этой простой манипуляции будет создаваться устойчивое впечатление, что присутствуют фиксированные колонки.
|
|
Лена |
Отправлено: 21.12.2006, 12:14 |
|
Мастер участка
Группа: Участник
Сообщений: 501
|
Очень хороший компонет ADVStringGrid от компании TMS. Надо установить несколько свойств в инспекторе объектов и будет перенос строк — все автоматом. |
|
olegenty |
Отправлено: 21.12.2006, 14:36 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
он платный. TVirtualStringTree — бесплатный. в последнее время стремлюсь использовать только то, что бесплатно либо куплено и в исходниках. на следующий год постараюсь выбить в своё подразделение только лицензионный софт, Turbo C++ — в том числе.
|
|
T@rEn |
Отправлено: 22.12.2006, 11:26 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 18
|
Всем спасибо!!!
Но у меня вопросик тупой возник, по установке VirtualTree.
Когда начинаю компилировать Package, Builder просит найти Package Import, и ссылается на файл *.bpi. Если Вам не трудно объясните, пожалуйста, чего ему надо и где это взять.
Заранее благодарен!!! |
|
olegenty |
Отправлено: 22.12.2006, 11:47 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
setup сам всё ставит, можешь ничего не компилировать, просто разнеси *.bpl, *.bpi, *.lib в соответствующие подкаталоги $(BCB)\Project
|
|
T@rEn |
Отправлено: 22.12.2006, 12:10 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 18
|
Спасибо!! |
|