| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Как записать в одну яч. StringGrid несколько строк |
| Автор: devmstr 22.6.2004, 16:03 |
| Можно ли записать в одну ячейку StringGrid несколько строк, если можно то как. |
| Автор: _hunter 22.6.2004, 16:14 |
| именно записать ( на постоянное хранение )? или показать при редактировании? если первое -- вряд ли |
| Автор: Albinos_x 22.6.2004, 19:12 |
| Рисовать сами ячейки в ручную в OnDrawCell. Для определения обрабатываемой ячейки использовать GridState. Например: procedure DrawTextAligned(Sender: TObject; ACol, ARow: LongInt; Rect: TRect; State: TGridDrawState); var l: word; l_x, l_y, i : integer; s, s1: string; l_c, l_r : Longint; begin l_c:=ACol; l_r:=ARow; with Sender as TStringGrid do begin if (l_r = 0) then Canvas.Font.Style:= Canvas.Font.Style + [fsbold]; if l_r = 0 then begin l:= SetTextAlign(Canvas.Handle, ta_center); l_x:= Rect.Left + (Rect.Right - Rect.Left) div 2; s:= Cells[l_c,l_r]; while s<>'' do begin if Pos(#13, s) <> then begin if Pos(#13,s) = 1 then s1:= '' else begin s1:= Trim(Copy(s,1,pred(pos(#13,s)))); Delete(s, 1, pred(pos(#13,s))); end; Delete(s,1,2); end else begin s1:=trim(s); s:=''; end; l_y:= Rect.Top + 2; Canvas.TextRect(Rect, l_x, l_y, s1); inc(rect.top, RowHeights[l_r] div 3); end; SetTextAlign(Canvas.Handle, l); end else Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Cells[l_c,l_r]); canvas.Font.Style := Canvas.Font.Style - [fsbold] end; end; Не проверял, но должно работать. |