Kurz zur Schilderung des Vorhabens:
In dem Programm rufe ich einen Suchdialog auf, in dem ein Editfeld das aktive Control ist, damit man gleich einen Suchbegriff eingeben kann. Die Return-Taste startet die Suche in einer Datenbank, das Ergebnis wird im Suchdialog in einer Tabelle präsentiert. Dort wählt man einen Datensatz aus, der bei Beenden dann im Hauptfenster angezeigt wird. Falls man nun gleich noch einmal suchen will, startet man erneut den Suchdialog, kann durch Eingabefeld = ActiveControl gleich wieder den Suchbegriff eingeben und mit Return die Suche starten.
Das Programm funktionierte noch mit Lazarus 2.0.12 und auf dieselbe Weise unter Linux und WinX.
Mit Lazarus 2.2.0 auf Fedora aber war das vorbei: Beim ersten Aufruf des Suchdialogs ist alles wie erwartet, ab dem zweiten Start des Suchdialogs passiert jedoch Folgendes: Sobald man im Editfeld Return drückt, wird zwar die Suche ausgelöst, aber dann der Suchdialog sofort beendet. Das passiert aber nur unter Linux; unter WinX mit Laz 2.2.0 ist alles wie immer.
Ich habe mal ein kleines Linux-Testprogramm geschrieben, das das Phänomen auch zeigt. Also im Hauptfenster auf Testen drücken, im zweiten Fenster etwas eingeben und Return drücken -- funktioniert, dann auf Zurück. Bei 2.0.12 bleibt das auch bei jedem weiteren Testen so. Bei 2.2.0 funktioniert das nur beim ersten Mal. Das ist in diesem Testprogramm natürlich nicht schlimm, aber bei einer Datenbanksuche will man ja aus mehreren Sätzen erst einen auswählen, bevor der Suchdialog beendet wird ...
Ich hab schon einige Sachen ausprobiert, z.B. SetFocus statt ActiveControl, TabStop-Reihenfolge, mit Defocus und Default experimentiert (was man eben so im www findet), aber bisher keinen Erfolg gehabt. Ich hab auch schon überlegt, OnCloseQuery zu verwenden oder mit KeyPreview zu experimentieren -- aber das kann es ja eigentlich nicht sein.
Das einzige, was richtig hilft, ist, den Beenden-Button zu disable'n

Aber vielleicht habe ich ja auch irgend eine Einstellung übersehen oder falsch gesetzt. Was meint ihr?