1. Чуть позже код выложу.
2. Символ перед которым стоит & отображается подчёркнутым ("горячмй" символ).
Код:
var
I : Integer;
begin
I := 0;
while I < GetMenuItemCount(Menu) do
begin
CheckMenuItem(Menu, I, MF_BYPOSITION or MF_UNCHECKED);
inc(I);
end;
CheckMenuItem(Menu, ID, MF_BYCOMMAND or MF_CHECKED);