AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

D12 VCL Eingabefokus nach Menü-Hotkeys

Ein Thema von WiWo · begonnen am 3. Jul 2024 · letzter Beitrag vom 4. Jul 2024
Antwort Antwort
WiWo

Registriert seit: 16. Aug 2007
Ort: Hamburg
25 Beiträge
 
Delphi 12 Athens
 
#1

AW: D12 VCL Eingabefokus nach Menü-Hotkeys

  Alt 4. Jul 2024, 09:51
hallo Olli,

ein SetFocus war natürlich mein erster Versuch. Hab's an allen möglichen Stellen probiert, ohne Erfolg. Es gibt leider auch nichts (mir bekanntes), um dem Menü den Fokus zu entziehen.
Ich hab das Projekt auch mal probeweise mit D11 kompiliert; da ist der Fehler auch schon drin.
Zur Sache mit der Alt-Taste: Ich hab hier sogar noch eine D2007-Version des Programms, die noch gewartet wird. Da funktioniert alles richtig. Das Problem ist, soweit ich das erkennen kann, erst mit den Styles reingekommen.
Dummerweise ist der Fehler ein halbes Jahr im Testbetrieb niemandem aufgefallen und jetzt, da die Auslieferung an die Kunden gestartet ist, wird es richtig eng.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.756 Beiträge
 
Delphi 12 Athens
 
#2

AW: D12 VCL Eingabefokus nach Menü-Hotkeys

  Alt 4. Jul 2024, 10:22
Programme im Hintergrund haben nicht das Recht sich selbstständig in den Vordergrund zu drängeln.
Das aktive Programm darf aber fremde Programme vorholen und ihnen die Kontrolle übergeben.

https://learn.microsoft.com/en-us/tr...on-not-working
https://stackoverflow.com/questions/...w-to-the-front
...

Wenn dein Programm durch irgendwass kurz den Fokus verliert, dann ist es am Arsch.
z.B. ein Fenster schließen, wo es fehlschlägt einem anderen eigenem Fenster vorübergehend den Fokus zu überlassen und erst dann das Neue öffnen.
passiert z.B. selbst der Delphi-IDE gern, wenn gewisse Options-/Fehlerdialoge geschlossen werden.



Oder, was ich grade eben als Problemchen hatte.
* ein Vorauswahldialog geht im OnCreate auf
* der wird geschlossen (Klick auf OK-Knopf) und es tritt ein Fehler auf (hier in einem Query mit defektem SQL)
* der Fehlerdialog erwischt noch das grade noch aktive Vorauswahl-Fenster und merkt sich dessen Handle (HWND)
* * VCL-Dialoge merken sich im ShowModal den Vorherrigen und wollen anschließend den Fokus zurück dahin verschieben
* der Vorgänger ist inzwischen weg, es tritt sowas wie ein Windows.SetFocus(0) auf
* und das Programm wird ganz nach hinten geschoben, hinter alle Fenster anderer Programme
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 4. Jul 2024 um 10:57 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
797 Beiträge
 
#3

AW: D12 VCL Eingabefokus nach Menü-Hotkeys

  Alt 4. Jul 2024, 11:18
ein SetFocus war natürlich mein erster Versuch. Hab's an allen möglichen Stellen probiert, ohne Erfolg. Es gibt leider auch nichts (mir bekanntes), um dem Menü den Fokus zu entziehen.

Probiere Mal:

Delphi-Quellcode:
  PostMessage(Unit1.Form1.Handle, WM_SYSKEYDOWN , VK_MENU, 0);
  PostMessage(Unit1.Form1.Handle, WM_SYSKEYUP , VK_MENU, 1);
  Mit Zitat antworten Zitat
WiWo

Registriert seit: 16. Aug 2007
Ort: Hamburg
25 Beiträge
 
Delphi 12 Athens
 
#4

AW: D12 VCL Eingabefokus nach Menü-Hotkeys

  Alt 4. Jul 2024, 12:37
Hi Olli,

mit Deiner Lösung geht's. Kann sogar in FormCreate-Events der Basis-Formulare eingebaut werden, womit das Problem einfach zu lösen ist. Muss ich nur noch intensiv testen, ob es in allen Situationen problemfrei funktioniert.
Danke.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.756 Beiträge
 
Delphi 12 Athens
 
#5

AW: D12 VCL Eingabefokus nach Menü-Hotkeys

  Alt 4. Jul 2024, 13:49
OnCreate
Nein.

Nur die MainForm ist mit Visible=True ... sonst werden Forms seit längerem mit Visible=False erstellt, sind beim Create also garnicht sichtbar und SetFocus heult, weil nichtfocusierbare Edits nicht fokusierbar sind.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.119 Beiträge
 
Delphi 12 Athens
 
#6

AW: D12 VCL Eingabefokus nach Menü-Hotkeys

  Alt 4. Jul 2024, 21:09
Du kannst einfach das Tracking des Menüs mit WM_CANCELMODE beenden:
Delphi-Quellcode:
procedure TMainForm.Form1Click(Sender: TObject);
begin
  //Application.CreateForm(Unit1.TForm1, Application);
  Unit1.Form1 := TForm1.Create(Application);
  Unit1.Form1.Show;
  PostMessage(Handle, WM_CANCELMODE, 0, 0);
end;
Nichts anderes passiert, wenn du z.B. auf das Formular klickst.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz