Einzelnen Beitrag anzeigen

Hobbycoder

Registriert seit: 22. Feb 2017
955 Beiträge
 
#5

AW: Modale Form -> SetFocus auf TLabeledEdit geht nicht

  Alt 19. Feb 2019, 08:30
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.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat