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



Изобрели суперкомпьютер. Позвали англичанина, немца и русского колхозника и сказали:
- Назовите два числа и компьютер произведет с ними любую операцию. Если он не сможет посчитать, вы получите кучу денег!
Англичанин называет 10^6581 - компьютер все посчитал и его выгнали. Немец называет 236^65468749846 - компьютер все посчитал и его тоже выгнали.
Русский говорит:
- До х#я...
Компьютер зависает. Изобретатели посовещались и решили:
- Поехали к нему в колхоз, наверное, у них там все такие умные!
Приезжают в колхоз, смотрят - мужик поле косит. Подходят к нему и спрашивают:
- Мужик, скажи, а "до х#я" это много?
- Да как вам сказать... Видите поле, которое я кошу? Это до х#я.
- Не поняли... А вот поле через дорогу - это тоже до х#я?
- А это соседское, это до п#зды!!!

...да, но вы должны перекрыть событие OnDraw. Ниже приведен пример, делающий заголовок многострочным, центрированным и с жирным шрифтом:


// if Dispatch.GetIDsOfNames(GUID_NULL, @NameRefs, NameCount,
procedure TForm1.grid1DrawCell(Sender: TObject; Col, Row: Longint;
Rect: TRect; State: TGridDrawState);
var
l_oldalign: word;
l_YPos, l_XPos, i: integer;
s, s1: string;
l_col, l_row: longint;
begin
l_col := col;
l_row := row;
with sender as tstringgrid do
begin
if (l_row = 0) then
canvas.font.style := canvas.font.style + [fsbold];
if l_row = 0 then
begin
l_oldalign := settextalign(canvas.handle, ta_center);
l_XPos := rect.left + (rect.right - rect.left) div 2;
s := cells[l_col, l_row];
while s <> '' do
begin
if pos(#13, s) <> 0 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_YPos := rect.top + 2;
canvas.textrect(rect, l_Xpos, l_YPos, s1);
inc(rect.top, rowheights[l_row] div 3);
end;
settextalign(canvas.handle, l_oldalign);
end
else
begin
canvas.textrect(rect, rect.left + 2, rect.top + 2, cells[l_col, l_row]);
end;
canvas.font.style := canvas.font.style - [fsbold];
end;
end;


Далее: Многострочный TStringGrid 2 »»