const
WM_AFTERSHOW=WM_USER+1;
A Form osztályának deklarációjában létrehozzuk az eseménykezelőt, mely akkor aktivizálódik, ha a Form-unk a WM_AFTERSHOW üzenetet kapja.
private
procedure DoAfterShow(var Msg: TMessage); message WM_AFTERSHOW;
Amikor a Form OnShow eseményének kezelője fut, akkor küldünk a Form-nak egy WM_AFTERSHOW eseményt. Ezt követően további funkciók végrehajtásának szimulálására várakoztatjuk a programot egy másodpercig. Mivel az üzenetet a PostMessage függvénnyel küldtük, így az azonnal bekerül az eseménykezelő sorba és rögtön folytatódik a programunk a következő sornál. Mivel azonban az alkalmazásunk elfoglalt a Sleep, vagy egyéb funkciók miatt, így a WM_AFTERSHOW kiolvasása és feldolgozása csak akkor következik be, ha már a programunk végzett az OnShow eseményben és "ráér". Ekkor kerül tehát meghívásra a DoAfterShow eljárásunk is.
procedure TForm1.FormShow(Sender: TObject);
begin
PostMessage(Handle, WM_AFTERSHOW, 0, 0);
Sleep(1000);
end;