Текущий архив: 2006.09.24;
Скачать: CL | DM;
ВнизTStringGrid Найти похожие ветки
← →
Ice © (2006-08-13 00:18) [0]Кто-нибудь знает, можно ли в одну ячейку грида поместить несколько строк? #13 он не воспринимает, никакой документации на эту тему ms не опубликовала. Помогите, пожалуйста советом или новой компонентой - очень надо.
← →
Kolan © (2006-08-13 00:33) [1]Многострочные ячейки в StringGrid.
Previous Top Next
Сперва необходимо установить свойство DefaultDrawing в False. Далее, необходимо вставить следующий код в обработчик события OnDrawCell:
procedure TForm1.StringGrid1DrawCell(Sender: TObject;
Col, Row: Longint;
Rect: TRect;
State: TGridDrawState);
var
Line1: string;
Line2: string;
ptr: integer;
padding: integer;
hGrid: TStringGrid;
begin
hGrid:= (Sender as TStringGrid);
ptr := Pos(";", hGrid.Cells[Col, Row]);
if ptr > 0 then
begin
Line1 := Copy(hGrid.Cells[Col, Row], 1, ptr - 1);
Line2 := Copy(hGrid.Cells[Col, Row], ptr + 1,
Length(hGrid1.Cells[Col,Row]) - ptr);
end
else Line1 := hGrid.Cells[Col, Row];
hGrid.Canvas.FillRect(Rect);
hGrid.Canvas.TextOut(Rect.Left, Rect.Top + 2, Line1);
if ptr > 0 then
hGrid.Canvas.TextOut(Rect.Left, Rect.Top -
hGrid.Canvas.Font.Height + 3, Line2);
end;
Теперь достаточно для переноса строки вставить в неё точку с запятой. Так же не забудьте изменить высоту строки так, чтобы переносы строки поместились в ячейку:
StringGrid1.RowHeights[0] := StringGrid1.DefaultRowHeight * 2 ;
Взято с Исходников.ru http://www.sources.ru
Опять же не проверял.
← →
KilkennyCat © (2006-08-13 00:42) [2]Наличие делимитера, его вычисления и проч. - лишнее. TextOut прекрасно умеет выводить в две и более строк самостоятельно и более точно. При наличии соответствущего флага (флагов).
← →
Kolan © (2006-08-13 00:42) [3]
> KilkennyCat © (13.08.06 00:42) [2]
Даже не глядел что-там :) Всеравно не знаю как правильно..
← →
Ketmar © (2006-08-13 01:03) [4]> [3] Kolan © (13.08.06 00:42)
яхдр. (ц)
← →
KilkennyCat © (2006-08-13 01:07) [5]Я очипся, не текстоут, а дроутекст.
Вообщем, что-то вроде:procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
var
s : string;
begin
s := StringGrid1.Cells[Acol, aRow];
StringGrid1.Canvas.FillRect(Rect);
drawtext(StringGrid1.Canvas.Handle, pchar(StringGrid1.Cells[Acol, aRow]), length(s), rect, DT_WORDBREAK);
end;
---------------------------------------------------------------------------------
Набрано неглядя, нечитая, непроверяя и вообще я делфи незнаю, сюда случайно зашел.
← →
Kolan © (2006-08-13 01:10) [6]
> яхдр. (ц)
Не запость я пост :) KilkennyCat ничего бы не заметил [2] и не дал бы ответ [5].
Все взаимосвязано :)
← →
Ketmar © (2006-08-13 01:14) [7]> [6] Kolan © (13.08.06 01:10)
эксклюзив! надо постить кривые решения, тогда набегут мастера и всё поправят. а если ничего не постить -- никто и не прибежит. %-)
← →
KilkennyCat © (2006-08-13 01:43) [8]и кстати, все-таки, пожалуйста, ИЩИТЕ ИНФОРМАЦИЮ, ПРЕЖДЕ ЧЕМ СПРАШИВАТЬ!!!!
http://www.delphimaster.ru/articles/stringgrid/index.html
← →
Ice © (2006-08-13 13:05) [9]Спасибо.
← →
Kolan © (2006-08-13 21:36) [10]
> эксклюзив!
А то :)
Страницы: 1 вся ветка
Текущий архив: 2006.09.24;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.049 c