Nja, als Erstes sollte man sich mal im Klaren sein, wann "wirklich" welche s ereignis ausgelöst wird.
OnShow/OnHide wird jeweils aufgerufen, wenn die Sichtbarkeit geändert werden soll, also wird OnShow aufgerufen
bevor die Form sichtbar wird.
> Ergebnis, selbst wenn du in OnShow das Hide aufrufst, wird dadurch nichts verändert, da es noch versteckt ist und danach wird dann die Form eingeblendet und bleibt natürlich sichtbar.
Hierfür könnte man jetzt
OnActivate nutzen (aber nicht vergessen weitere Aufrufe zu blocken, da eine Form ja mehrmals "aktiviert" werden kann),
oder man schickt im OnShow eine eigene Message an seine Form (
PostMessage), welche erfahrungsgemäß "standardmäßig" erst nach dem Anzeigen ankommt und reagiert dann dort. (außer jemand spielt mal wieder am
Application.ProcessMessages rum)