Советы по Delphi

       

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


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

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

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

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

- Neil J. Rubenking [000821]



Содержание раздела