Авторазмер ширины колонок TStringGrid
Автор: Neil J. Rubenking
Я использую компонент 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 данными методами всегда расширяет
данную колонку, если вновь добавляемая строка имеет ширину большую чем текущая
ширина колонки.
|