Hallo,
hast du FormActivate schon probiert?
Gleicher Effekt
Zu Deinem FormShow und PostMessage.
Du bist innerhalb der Nachrichtenbearbeitung des ON_SHOW und sendest eine weitere Nachricht,
hier hätte wieder besseren Wissens sogar SendMessage benutzt, wenn halt überhaupt.
War ja auch mehr ein Test.
Hallo,
ich habe mal ein Minimal-Beispiel erzeugt.
Sowohl FormShow als auch FormActivate funktionieren.
Delphi-Quellcode:
procedure TForm133.FormShow(Sender: TObject);
begin
LabeledEdit2.SetFocus;
end;
Ich habe auch ein Minimalbeispiel erzeugt. Da funktioniert es auch bestens.
Allerdings ohne das LMCLogin.ActiveControl:=LMCLogin.lbledtUsername;
Ist das wirklich dein ganzer Code?
Mache mal ein neues leeres Projekt und probier das aus.
Jepp. Ist der ganze Code. Die
Unit LMCLogin.pas habe ich komplett gepostet. Der Aufruf ist natürlich nach hinten raus abgeschnitten. Aber vorweg kommt nichts.
Aber ich habe meinen Fehler mittlerweile gefunden.
Zur Erklärung: Wenn eine Anwendung eine Anmeldung benötigt, und man die Loginform im OnShow der Mainform modal aufruft, erscheint die MainForm erst, wenn der modale Dialog beendet ist. Ausdiesem Grund packe ich das gern in die OnPaint der Mainform (mit einer Firstpaint-Variable). So auch dieses mal. Allerdings bleibt dann wohl der Fokus noch auf der Mainform.
Jetzt habe ich im OnPaint noch ein
Inherited; Application.ProcessMessages;
vor dem modalen Aufruf der Loginform eingesetzt, damit alle Zeichenvorgänge und Nachrichten abgearbeitet sind. Und dann klappt auch ein SetFocus im FormShow der LoginForm.
Danke euch trotzdem, denn ihr habt mich dazu angehalten, das, was vor dem modalen Aufruf kommt, noch mal genauestens anzuschauen.