AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi NONVCL: Problem mit Keyboard Focus
Thema durchsuchen
Ansicht
Themen-Optionen

NONVCL: Problem mit Keyboard Focus

Ein Thema von OLLI_T · begonnen am 6. Jan 2004 · letzter Beitrag vom 7. Jan 2004
Antwort Antwort
OLLI_T

Registriert seit: 13. Okt 2003
Ort: Nähe Wetzlar / Hessen
143 Beiträge
 
Delphi 5 Enterprise
 
#1

NONVCL: Problem mit Keyboard Focus

  Alt 6. Jan 2004, 16:00
Hallo liebe Gemeinde!

Ich wünsche Euch allen einen erfolgreiches, gesundes und weitestgehend bugfreies Jahr 2004.

Folgendes Szenario: In einer NONVCL Anwendung werden modale Dialoge erzeugt, die hauptsächlich graphische Controls ähnlich des TGraphicControl der VCL enthalten. An diese Controls leite ich aus der Dialogprozedur heraus unter anderem WM_KEYDOWN/UP Nachrichten um. Damit das funktioniert, muss im WM_INITDIALOG der Focus mit SetFocus(AWnd) auf den Dialog selber gesetzt werden.

Nun enthält ein Dialog neben den graphische Controls aber zusätzlich noch zwei Listviews, die natürlich auch den Focus erhalten können. Und hier kommt es nun zum Dilemma Nr. 1 des Jahres. Es gelingt mir nicht, den Focus zurück auf das Dialogfenster zu setzen. Ich rufe brav SetFocus(AWnd) auf und es wird auch eine WM_SETFOCUS Nachricht an die Dialogprozedure abgesetzt. Aber das ist leider auch alles. Der Focus landet immer wieder auf dem ersten Listview.

Wie bekomme ich den Focus wieder auf mein Fenster zurück???

Viele Grüsse

Der OLLI
No Pain No Gain!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: NONVCL: Problem mit Keyboard Focus

  Alt 7. Jan 2004, 02:07
Kuck dir mal folgendes Scenario an: Delphi starten (leeres Formular), ein Edit draufpacken, F9.

So Das Edit hat jetzt den Focus und der Text ist selektiert. Jetzt klick irgendwo neben das Edit oder klick irgendein anderes Fensters an. Dann aktivierts du wieder dein Fenster mit dem Edit. Und du wirst sehen das Edit hat immer noch den Fokus und die Einfügemarke blinkt fleißig weiter im Edit.

Fazit: Ein Fenster / Dialog kann nur "aktiv" sein (farbige Titelleiste im Gegensatz zur grauen), es kann aber nicht den Fokus erhalten, wie ein Kindfenster. Oder hast du schon mal ein Elternfenster mit gestrichelten Rahmen gesehen?

Zitat von OLLI_T:
An diese Controls leite ich aus der Dialogprozedur heraus unter anderem WM_KEYDOWN/UP Nachrichten um.
Wie darf ich das verstehen?

Ich weiß nicht, aber ich würde es genau anders rum machen. Ich würde die Kontrolls subclassen damit sie nur auf die Tastatur-Nachrichten reagieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 08:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz