Идёт загрузка страницы...

htp://aptem.net.ru





Delphi 1

Ширина колонок 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]