Karle, nevšiml jsem si, že by JJ měl v původním kódu nastaveno Align na cokoliv jiného než defaultní hodnotu - tudíž alNone. Takže máš sice pravdu (to nikdo nezpochybňuje), ale není to relevantní. Mimochodem, pokud budeš resizovat pomocí procedury AlignControls, tak si můžeš dělat co chceš, align nealign

Ad <z>: Já nepohrdám align... ale pokud chci použít padding v D7 tak tak mi align prostě moc nepomůže.
TPanel tady používá jako kontejner, což je víceméně v pořádku. Stačí vypnout border u panelu (viz BevelOuter := bvNone;), a nastavit ParentBackground na True (na to jsem asi zapomněl) a je to.
Ale je pravda, že pro tuto věc si ten panel může ušetřit a zadefinovat si TPanelFilters jako group box a do toho vložit ten listbox.
Ten listbox je ale s alClient moc blízko okrajů, a to JJ podle mě nechce (nevypadá to moc hezky).
zakladni chyba je pouziti "padding" s pevnou hodnotou vzhledem k tomu,
ze okraje mohou byt vykreslovany v zavislosti na tematu Woken
To je pravda, viz TCustomGroupBox.AdjustClientRect.
Správné řešení s padding by bylo takové nějaké:
type
TMyWinControl = class(TWinControl)
end;
procedure TPanelFilters.AlignComponents;
const
xPadding = 6;
var
xClientRect: TRect;
begin
if Parent = nil then
exit;
GroupBoxFilters.SetBounds(0, 0, Self.ClientWidth, Self.ClientHeight);
xClientRect := GroupBoxFilters.ClientRect;
TMyWinControl(GroupBoxFilters).AdjustClientRect(xClientRect);
ListBoxFilters.SetBounds(
xClientRect.Left + xPadding,
xClientRect.Top + xPadding,
xClientRect.Right - xClientRect.Left - 2*xPadding,
xClientRect.Bottom - xClientRect.Top - 2*xPadding);
end;
Sice moc nechápu, že vlastnost ClientRect není už s AdjustClientRect (tedy že GetClientRect nevolá AdjustClientRect), ale není problém to obejít.
Anchors bych v D7 radši moc nepoužíval, moc jim nevěřím - mám dojem, že minimálně do Delphi 2007 byla ve VCL chyba - ignorovaly styly při pozicích. Když člověk na Windowsech bez stylů zadefinoval formulář a dal na něj komponentu s Align = alNone, a Top = 0 a pak to spustil na Windowsech se styly, tak se ta komponenta šoupla o pár px nahoru mimo formulář. Delphi prostě ignorovaly výšku hlavičky okna a jeho okraje. Řešení bylo dát na formulář panel s Align = alClient a všechny komponenty až do něj. Ale je to už strašně let, když jsem na to narazil, XE2 to má už v pořádku.