StringGrid: ячейки с многострочным текстом

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

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

Re: StringGrid: ячейки с многострочным текстом

Сообщение krab » 09.07.2010 18:01:46

Mr.Smart писал(а):krab
А вы не думаете, что в гриде заголовок тоже является ячейкой, которую необходимо тоже рисовать самому :wink:


Не пойму: почему текст ячеек выводится самим Lazarus'ом, а заголовки нужно выводить принудительно? См. комментарии (if aRow = 0 then // если это ...) в коде:
Код: Выделить всё
procedure TForm1.StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
  aRect: TRect; aState: TGridDrawState);
var
  twidth, count: integer;
  xRect: TRect;
begin
  with StringGrid1 do
  begin
    Canvas.TextStyle.SingleLine := False;
    Canvas.TextStyle.Wordbreak := True;

    if aRow = 0 then // если это заголовок колонки, ширину текста берем из массива заголовков
      twidth := Canvas.GetTextWidth(StringGrid1.Columns.Items[aCol].Title.Caption)
    else // иначе из массива ячеек
      twidth := Canvas.GetTextWidth(StringGrid1.Cells[1,aRow]);

    count := round(twidth / (Canvas.Width*0.8) + 0.5);

    StringGrid1.RowHeights[aRow] := count*Canvas.TextHeight('W')*2;

    if aRow = 0 then // если это заголовок колонки, нужно вывести его принудительно,
    // а если это ячейка, ее текст выведется сам
      Canvas.TextRect(aRect, aRect.Left, aRect.Top, StringGrid1.Columns.Items[aCol].Title.Caption);
  end;
end;   
krab
постоялец
 
Сообщения: 108
Зарегистрирован: 17.02.2010 18:23:08

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 228

Рейтинг@Mail.ru