Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Форматирование ячеек в TStringGrid. [D1, D2, D3, D4, D5, D6, Win95/98, WinME, NT4, Win2k, WinXP]


Muzzy ©   (2002-04-02 12:33:00) 

Уважаемые мастера, помогите реализовать сабж.
В ячейки StringGrid заносятся названия пунктов, но сами названия очень длинные и чтение затруднено. Задача: в фиксированную длину столбца поместить строку, и если эта строка выходит за пределы ячейки автоматически увеличить ширину ячейки и разместить остальное строкой ниже в этой же ячейке (нечто похожее на «перенос по словам” в Excel) и позиционировать все это в верхний левый угол. Есть ли подобное свойство у StringGrid или надо делать ручками. И если ручками, то как?


MBo   (2002-04-02 13:04:00) [1]

что-нибудь в этом роде
procedure TForm1.sg1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var r:trect;
begin
if sg1.canvas.textwidth(sg1.cells[Acol,Arow])>sg1.ColWidths[Acol] then begin
r:=rect;
DrawText(sg1.canvas.handle,pchar(sg1.cells[Acol,Arow]),length(sg1.cells[Acol,Arow]),r, DT_WordBreak+DT_CalcRect);
r.right:=rect.right;
sg1.canvas.fillrect(r);
sg1.Rowheights[aRow]:=r.bottom-r.top+3;
DrawText(sg1.canvas.handle,pchar(sg1.cells[Acol,Arow]),length(sg1.cells[Acol,Arow]), r, DT_WordBreak);
end;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо