Dein Code ist prinzipiell korrekt.
Ich könnte mir nur vorstellen, dass die Reihenfolge nicht stimmt.
Delphi-Quellcode:
CoolTrayIcon1.ShowMainForm;
CooltrayIcon1.IconVisible:=false;
// Soweit stimmts auf jeden Fall, hab ich auch schon so verwendet
// Evtl. hier noch ein Application.ProcessMessage(); einfügen!??
If frm_Schiffskontrolle.Showing = True Then frm_Schiffskontrolle.Hide;
If frm_TextToClient.Showing = True Then frm_TextToClient.Hide;
Sonst probier mal die letzten zwei Zeilen wegzulassen und schau mal ob es dann geht.
Ich vermute den Fehler irgendwo in den Hide-Methoden deiner zwei Forms.