안녕하세요? 민행복 홍환민입니다.
글 제목을 짓기가 참 난감했네요. ^^ 뭐라고 표현을 해야할지... ^^

일반적으로 다음과 같은 팁은 많이 아시리라 생각합니다.

  ListBox.Items.BeginUpdate;
  try
    ListBox.Items.Add('1');
    ListBox.Items.Add('2');
    ListBox.Items.Add('3');
  finally
    ListBox.Items.EndUpdate;
  end;

리스트박스에 아이템을 추가하는 예인데요. 위에서는 3개만 추가했지만 훨씬 많은 수를 추가할 때에는
위와 같이 BeginUpdate, EndUpdate를 하면 좋습니다.

왜냐하면, 어차피 중간과정은 화면에 표시될 필요가 없기 때문입니다.
하나하나 추가될때마다 화면에 추가되어 표시된다면, 느려지기 때문입니다.

추가하기 전에 BeginUpdate 하고 모두 다 추가되고 난 뒤에며ㄴ  EndUpdate 하게 되면 EndUpdate 하는 순간에 화면에 변화된 정보가 표시되게 됩니다.

비슷한 예로 Canvas에서 Lock과 Unlock이라는 메서드가 있습니다.
화면에 많은 변화가 일어나는데 중간과정을 보일 필요가 없을 때 (보이기 때문에 문제가 될때),
다음과 같이 처리할 수 있습니다.

  Canvas.Lock;
  try
    그리기 연산들
  finally
    Canvas.Unlock;
  end;

또한 마찬가지의 원리로 어떤한 컴넌트가 있고 그것을 부모로 지정한 자식 컴포넌트가 있습니다.
자식 컴포넌트의 Align 속성은 alClient 입니다. 그리고 부모 컴포넌트의 크기를 여러번 바꿔야 한다고 합시다.
일반적으로는 여러번 바꿔도 문제가 되지 않지만 컴포넌트의 부모 자식 관계가 복잡하고, 각각의 Align 속성이 있을 경우 Align이 적용되어 컴포넌트의 크기나 위치가 자주 변하는 경우가 생깁니다.

그러면 해당 자식 컴포넌트가 자주 위치나 크기가 변해서 소위 울렁거리는 것처럼 보일 수가 있습니다.
눈에 보기에 상당히 안좋습니다. 저역시 방금 그 문제를 해결했는데요. (정말 뻘짓을 많이 했습니다 흑흑)

EnableAlign
DisableAlign

이라는 메서드를 사용하면 됩니다. TWinControl이 가지고 있는 메서드입니다.

  Panel.DisableAlign;
  try
    Panel.ClientWidth := xxx;
    Panel.ClientHeight := yyy;
  finally
    Panel.EnableAlign;
  end;

위와 같이 하면 됩니다.
Panel 또한 Align 설정이 되어있고, 뭐 복잡하게 Align 관계가 얽혀 있을 경우에 효과가 있습니다.
위의 코드에서처럼 Panel의 크기를 변경시킴으로서 Align 속성과 연관되어 있는 다른 컴포넌트들의 위치와 크기가 변하고
그로인해 화면상의 특정 컴포넌트가 눈에 거슬리게 위치나 크기가 변화하고 있다면, 위와 같이 DisableAlign을 호출합니다. 그러면 Align에 의해 컴포넌트의 크기가 위치가 변하는 동작이 정지됩니다. 그리고 원하시는 작업을 한 뒤, EnableAlign을 호출하여 다시 Align 기능을 동작시키면 됩니다.

기존에 Align := alNone 으로 만들고 이런저런 일을 하고 다시 Align := 원래값  이런 식으로 작업하시던 분들도 위의 코드를 활용해 보시면 좋을 듯 합니다.

밤 늦은 시간에 작성하다보니 글이 매끄럽지 않게 작성된 것 같습니다. 흠냐~
행복한 하루 되세요.