Многострочный StringGrid

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
speed_vm

Многострочный StringGrid

Сообщение speed_vm »

Всем доброго времени суток! Хочу сделать автоматический перенос текста в СтрингГриде относительно границы ячейки. Пишу такой код:

Код: Выделить всё

With StringGrid1.Canvas
Do Begin
         TextStyle.SingleLine:= False;
         TextStyle.WordBreak:= True
     End

После чего компилятор выдаёт такую ошибку: "Argument can't be assigned to". Что я делаю не так?
Аватара пользователя
Light13
постоялец
Сообщения: 127
Зарегистрирован: 17.07.2009 07:50:10
Откуда: Челябинск

Re: Многострочный StringGrid

Сообщение Light13 »

1. Обойти это конечно можно, например, так

Код: Выделить всё

var
   TextStyle: TTextStyle;
begin
  TextStyle.Wordbreak := True;
  TextStyle.SingleLine := False;
  StringGrid1.Canvas.TextStyle := TextStyle;

Только это вам не поможет.

2. имхо лучше не использовать with - куча неприятностей из-за этого.
3. Обрабатывайте OnDrawCell: руками считайте длину текста, проверяйте выход за границы ячейки и т.д.
4. Не вижу в этом смысла: если в ячейках такая длинная строка, то выводите ее при фокусировки ячейки в другой элемент управления.
speed_vm

Re: Многострочный StringGrid

Сообщение speed_vm »

Проблема, в общем, была в отображении длинных заголовков столбцов. Посмотрев реализацию многострочного Грида на разных форумах, решил, что приемлемой будет реализация определения длины текстовой строки в заголовке и подгонке ширины столбца под эту длину.
Проект уже сдавать на тестирование нужно. На выходных поковыряюсь ещё. В любом случае, Light13, благодарю за помощь.
Ответить