Форум: "Начинающим";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];
ВнизGrid Найти похожие ветки
← →
dm37 (2005-11-11 09:19) [0]Подскажите, возможно ли сделать такое
как известно в grid текст выглядит так:
строка 1: a1 a2 a3
строка 2: b1 b2 b3
нужно так:
строка 1: первая группа
строка 2: a1 a2 a3
строка 3: вторая группа
строка 4: b1 b2 b3
т.е. перерисовать одну строку в таблице без столбцов (например, как в Excel)
← →
ЮЮ © (2005-11-11 09:45) [1]Конечно можно. Никто ведь не запрещает рисовать на канвасе вне пределов ARect, переданного в качестве параметра соответствующего OnDrawCell
P.S. Grid-то какой?
← →
dm37 (2005-11-11 09:53) [2]StringGrid
← →
ЮЮ © (2005-11-14 05:24) [3]
procedure TForm1.FormCreate(Sender: TObject);
begin
// всю отрисовку берём на себя
StringGrid1.DefaultDrawing := false;
StringGrid1.Options := StringGrid1.Options - [goVertLine, goHorzLine];
StringGrid1.ColCount := 3;
StringGrid1.FixedCols := 0;
StringGrid1.RowCount := 4;
StringGrid1.FixedRows := 0;
StringGrid1.Cells[0, 0] := "первая группа";
StringGrid1.Cells[1, 0] := "|";
StringGrid1.Cells[2, 0] := "|";
StringGrid1.Cells[0, 1] := "a1";
StringGrid1.Cells[1, 1] := "a2";
StringGrid1.Cells[2, 1] := "a3";
StringGrid1.Cells[0, 2] := "вторая группа";
StringGrid1.Cells[1, 2] := "|";
StringGrid1.Cells[2, 2] := "|";
StringGrid1.Cells[0, 3] := "b1";
StringGrid1.Cells[1, 3] := "b2";
StringGrid1.Cells[2, 3] := "b3";
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
col: integer;
begin
if StringGrid1.Cells[ACol, ARow] = "|" then exit;
// включаем в Rect объединяемые ячейки
col := Acol + 1;
while
(col < StringGrid1.ColCount) and (StringGrid1.Cells[col, ARow] = "|")
do begin
Rect.Right := Rect.Right + StringGrid1.ColWidths[col] + StringGrid1.GridLineWidth;
inc(col);
end;
// очищаем прямоугольник
StringGrid1.Canvas.Brush.Style := bsSolid;
StringGrid1.Canvas.Brush.Color := StringGrid1.Color;
StringGrid1.Canvas.FillRect(Rect);
// рисуем сетку
StringGrid1.Canvas.Pen.Color := clSilver;
StringGrid1.Canvas.Rectangle(Rect);
//выводим текст
Rect.Right := Rect.Right - 1;
Rect.Bottom := Rect.Bottom - 1;
StringGrid1.Canvas.Font.Assign(StringGrid1.Font);
StringGrid1.Canvas.TextRect(Rect, Rect.Left + 1, Rect.Top + 1, StringGrid1.Cells[ACol, ARow]);
end;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.035 c