Re earlier I have improved this code because there doesnt seem to be any other suitable solution to finding the tray icon location. Pse replace my earlier code with the below //global TrayIconRight:word; TrayIconActive:boolean; //the following sets up position procedure TPlayerForm.RxTrayMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin //TrayIconRight //set right margin and check in case new tray incons installed //Tray icon width is 18(X) if (X > TrayIconRight) or (TrayIconRight - X > 18) then begin TrayIconRight := X; TrayIconActive:=false; end; if (TrayIconRight-x)>=14 then TrayIconActive:=true; end; //The following uses it procedure TPlayerForm.RxTrayClick(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin //Allow short delay just in case double click (form made visible) delay(GetDoubleClickTime()); if Playerform.Visible then exit; if not TrayIconActive then //IconRight = 0 then begin menuPauseClick(self); exit; end else x := TrayIconRight - x; if x <= 4 then menunextclick(self) else if x <= 12 then menupauseclick(self) else menupreviousclick(self); end; --------------------------------------------------------------------------- New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED] Website: http://www.delphi.org.nz