У меня есть потомок класса TVirtualStringTree
с моей собственной процедурой авторазмера столбцов.Чтобы заставить его работать всякий раз, когда изменяется размер элемента управления, я переопределил процедуру Resize
:
type
TMyVirtualStringTree = class(TVirtualStringTree)
protected
procedure Resize; override;
end;
.....
procedure TMyVirtualStringTree.Resize;
var
cb: Integer;
begin
inherited;
if Header.Columns.Count > 0 then
for cb := 0 to Header.Columns.Count - 1 do
Header.Columns[cb].Width := round((Width - 20) / Header.Columns.Count);
end;
Все работает отлично, кроме одной вещи: изменение размера столбцов вручную (с помощью мыши на заголовке) без изменения фактическогоРазмер элемента управления вызывает генерацию нежелательных WM_SIZE
событий с разными LParams (размер элемента управления).И, таким образом, вызывается Resize
, и столбцы автоматически корректируют свою ширину, что я не имел в виду.Как сделать так, чтобы авторазмер работал только при фактическом изменении ширины элемента управления?