Советы по Delphi


              

Ширина колонок TStringGrid


Я использую компонент StringGrid и хотел бы менять ширину его колонок в соответствии с расположенным в них текстом, другими словами я хочу чтобы весь текст в них был виден, но как это сделать?

Попробуйте это:

    procedure TForm1.StringGrid1SelectCell(Sender: TObject; vCol, vRow: Longint; var CanSelect: Boolean); VAR Wid: Integer; begin WITH Sender AS TStringGrid DO BEGIN Wid := Canvas.TextWidth(Cells[Col,Row]+' '); IF Wid > ColWidths[Col] THEN ColWidths[Col] := Wid; END; end;
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char); VAR Wid : Integer; begin IF Key = #13 THEN WITH Sender AS TStringGrid DO BEGIN Wid := Canvas.TextWidth(Cells[Col,Row]+' '); IF Wid > ColWidths[Col] THEN ColWidths[Col] := Wid; END; end;

Имейте в виду, что в обработчике события OnSelectCell я переименовал параметры Col и Row на vCol и vRow, чтобы избежать путаницы со свойствами StringGrid, имеющими те же имена. StringGrid c данными методами всегда расширяет данную колонку, если вновь добавляемая строка имеет ширину большую чем текущая ширина колонки.

- Neil J. Rubenking [000821]



Содержание  Назад  Вперед