Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.04;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.029 c
14-1131967610
Гарри Поттер
2005-11-14 14:26
2005.12.04
Русское чтиво в эл.виде про Exchange Server


2-1132318843
ska
2005-11-18 16:00
2005.12.04
Во время вычислений приложение "виснет"


14-1131709129
Макс1
2005-11-11 14:38
2005.12.04
ОС Singularity


4-1127144763
incm
2005-09-19 19:46
2005.12.04
Как преобразовать jpg в bmp, при этом используя минимум ресурсов?


14-1131997607
genek84
2005-11-14 22:46
2005.12.04
Формирование сложного отчета в Фоксе 9.0