Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.028 c
1-1155223411
Destroyer
2006-08-10 19:23
2006.09.24
Сохранение состояния компонентов на форме


15-1156092579
Юрий Зотов
2006-08-20 20:49
2006.09.24
И снова о демократии на "Мастаках" о:)


15-1157452423
Konstantin555
2006-09-05 14:33
2006.09.24
HELP! Как разблокировать CD-ROM?!


15-1157098933
ArtemESC
2006-09-01 12:22
2006.09.24
Людмила Путина вступилась за школьников


2-1157301812
Konstantin555
2006-09-03 20:43
2006.09.24
Как в ходе программы задать параметр CanResize формы?