Я использую компонент 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]