-
Здравствуйте. Подскажите как сделать stringgrid чтобы ширина всех столбцов выравнивалась по ширине компонента в процентом соотношении и при смене ширины стриргрида столбцы бы маштабировались автоматически. Вообщем ситуация с появлениям горизонтального скрола крайне не приемлема. Также это нужно и при ресайзе любого из столбцов. Может есть и не stringgrid уже с готовым функционалом?
-
эм... Может возьмите TListView в режиме vsReport и всё?
-
> Сапёр (12.01.19 15:47) [1]
TListView в режиме vsReport конечно выглядит гораздо "красивше", чем stringgrid. Но автоматическое масштабирование ширины колонок он точно также не поддерживает.
-
TForm1 = class(TForm)
pnl1: TPanel;
sg1: TStringGrid;
spl1: TSplitter;
procedure FormCreate(Sender: TObject);
private { Private declarations }
FOldSGWnd: TWndMethod;
procedure FNewSGWnd(var Msg: TMessage);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FNewSGWnd(var Msg: TMessage);
begin
if MSg.Msg = CM_INVALIDATE then
begin
Sleep(0); // равняем как надо
end;
FOldSGWnd(Msg);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FOldSGWnd := sg1.WindowProc;
sg1.WindowProc := FNewSGWnd;
end;
-
> не поддерживает
А это что?:
TListColumn.AutoSize:=True;
С:
-
> А это что?:
Из справки:
"Specifies whether the list column automatically sizes itself to the width of its text.
property AutoSize: Boolean;
Description
Use AutoSize to get or set whether the list column automatically sizes itself to the width of its text."
Перевести на русский или сами справитесь?
-
По ширине текста? Значит в вашей справке ошибка.
Никогда оно себя так не вело. Ни в семёрке ни в Токио.
Можете проверить, работает почти как хотел ТС, только без процентных - фиксированные не трогаются, остальные пропорционально.
-
-
Просто написать обработчик на изменение ширины, в котором менять ширины столбцов как хочется
Одна беда: написать алгоритм такого обработчика несколько не просто, т.к. изменение (пересчет) идёт при изменении ширины на каждый пиксель, а потому понятие "текущие пропорции ширин столбцов" внезапно сильно размазывается, т.к. сами ширины могут быть только дискретными, в 1 пиксель тоже.
Потому даже когда мы поймём, что ширины (пропорции) надо хранить в double, всё равно останется вопрос: что брать за исходные пропорции ширин? как узнать "пользователь перестал изменять ширину", чтобы такие пропорции сохранить?
А, понял
Сохранять пропорции столбцов надо
- изначально
- после того как пользователь изменял ширины столбцов, не формы
И всё будет очугей