Focus setzen beim schließen mit TDINotebook

Rund um die LCL und andere Komponenten
Antworten
Ich934
Lazarusforum e. V.
Beiträge: 396
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux mit FPCUPdeluxe (L: 4.2, FPC 3.2.2)
CPU-Target: x86_64 (Win & Linux)
Wohnort: Bayreuth

Focus setzen beim schließen mit TDINotebook

Beitrag von Ich934 »

Hallo,

ich habe hier ein kleines Problem, bei dem mir langsam die Ideen ausgehen:

Gegeben:
- Hauptformular mit diversen Eingabeelementen, u.a. TEdits, TDBGrid, etc.
- TTDINotebook in dem im Vollbildmodus Formulare eingebunden werden, MainMenu ist gesetzt

Es wird nun ein Fenster geöffnet und in dem Notebook angezeigt. Das aufrufende Feld ist bekannt. Jetzt wird das über das "x" im MainMenu geschlossen. Da ich das aufrufende Feld kenne, kann ich einen Focus setzen. Unter Linux funktioniert das (qt6), Unter Windows erfolgt ein setzen des Focus auf das erste Feld (Focus ID 0).

Ich habe schon versucht, ein verzögertes setzen des Focus im Fenster und im Main Formular versucht. Kein Erfolg. Ideen, was ich hier noch machen kann?

Technisch kann ich mir das schon irgendwie erklären, dass ich ja in einem Fenster bin und der Focus hier intern springt. Aber das kann ich einen Benutzer nicht erklären.

cu tb.
Tipp für PostgreSQL: www.pg-forum.de

Benutzeravatar
theo
Beiträge: 11152
Registriert: Mo 11. Sep 2006, 19:01

Re: Focus setzen beim schließen mit TDINotebook

Beitrag von theo »

Für mich ist diese Beschreibung schwer verständlich.
Was ist ein "aufrufendes Feld"?
Wie hast du das "verzögerte setzen des Focus" bewerkstelligt?

dj_leinad
Beiträge: 46
Registriert: Sa 1. Okt 2022, 05:27
OS, Lazarus, FPC: Win10 pro (Laz 4.3 / FPC 3.2.3)
CPU-Target: 64Bit
Wohnort: CH

Re: Focus setzen beim schließen mit TDINotebook

Beitrag von dj_leinad »

Lass Dir mal den aktiven Focus vor dem aufruf des Notebook anzeigen.

Code: Alles auswählen

if Assigned(Self.ActiveControl) then
    ShowMessage('Fokus auf: ' + Self.ActiveControl.Name);
Erfahrung heißt gar nichts. Man kann eine Sache auch 35 Jahre schlecht machen.

Ich934
Lazarusforum e. V.
Beiträge: 396
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux mit FPCUPdeluxe (L: 4.2, FPC 3.2.2)
CPU-Target: x86_64 (Win & Linux)
Wohnort: Bayreuth

Re: Focus setzen beim schließen mit TDINotebook

Beitrag von Ich934 »

theo hat geschrieben: Fr 6. Feb 2026, 12:29 Für mich ist diese Beschreibung schwer verständlich.
Was ist ein "aufrufendes Feld"?
Wie hast du das "verzögerte setzen des Focus" bewerkstelligt?
Aufrufende Feld ist die Komponete, von der ich aus starte, z.B. eine TEdit. Ich kann da mit einer Taste das Fenster starten das ggf. im TTDINotebook landet.

Über Application.QueueAsyncCall(@SetFocusDelayed, 0);
Tipp für PostgreSQL: www.pg-forum.de

Ich934
Lazarusforum e. V.
Beiträge: 396
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux mit FPCUPdeluxe (L: 4.2, FPC 3.2.2)
CPU-Target: x86_64 (Win & Linux)
Wohnort: Bayreuth

Re: Focus setzen beim schließen mit TDINotebook

Beitrag von Ich934 »

dj_leinad hat geschrieben: Fr 6. Feb 2026, 12:35 Lass Dir mal den aktiven Focus vor dem aufruf des Notebook anzeigen.

Code: Alles auswählen

if Assigned(Self.ActiveControl) then
    ShowMessage('Fokus auf: ' + Self.ActiveControl.Name);
Die Komponente, von der ich aus aufrufe. Beim Grid das Grid und nicht die Editorkomponente. Genau so, wie eigentlich erwartet.
Tipp für PostgreSQL: www.pg-forum.de

Benutzeravatar
Zvoni
Beiträge: 531
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

Re: Focus setzen beim schließen mit TDINotebook

Beitrag von Zvoni »

theo hat geschrieben: Fr 6. Feb 2026, 12:29 Für mich ist diese Beschreibung schwer verständlich.
Was ist ein "aufrufendes Feld"?
Wie hast du das "verzögerte setzen des Focus" bewerkstelligt?
Ich hab auch kein Wort verstanden.
Ein Bild sagt mehr als 1000 Worte?
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Antworten