Fokus auf einen Button in einem modalen Dialog
-
Wenn der OK Button disabled wird musst Du einen anderen Defult Button definieren. Verwende doch mal SetDefID!
Zudem könntest Du auch einfach die Tabfolge ändern unf IDOK ans Ende setzen. Der Ring der Controls bleibt ja identisch.
-
Martin Richter schrieb:
Wenn der OK Button disabled wird musst Du einen anderen Defult Button definieren. Verwende doch mal SetDefID!
Zudem könntest Du auch einfach die Tabfolge ändern unf IDOK ans Ende setzen. Der Ring der Controls bleibt ja identisch.
Das hab ich gemacht, leider ohne Erfolg. Mit dem Disable wollte ich nur schauen, ob die OnInit richtig abgearbeitet wird. Wenn ich SetDefID (SetDefID(IDC_TESTEN_START)) verwende, dann bleibt der Focus permanent auf dem dann definierten Button. Ich muss aber, nachdem der Startbutton gedrückt wurde den Focus auf den Stoppbutton legen und den Startbutton deaktivieren. Drückt man dann auf den Stoppbutten soll das ganze umgedreht ablaufen. Jeder weitere SetFocus-Aufruf bleibt allerdings unberührt. Warum? Soweit ich weiß muss man duch nichts updaten...
-
Kann es sein, dass Du Default-Button und Foxus verwechselst?
-
Martin Richter schrieb:
Kann es sein, dass Du Default-Button und Foxus verwechselst?
Nein, hab ich nicht verwechselt. Ich hab jetzt allerdings im Ressourceneditor bei allen Buttons, zwischen denen ich hin und herschalten will, die Eigenschaft "Standardschaltfläche" auf "True" gesetzt und jetzt gehts komischerweise. Das war mir echt neu...
-
Das wäre aber nicht korrekt. Es sollte nur einen solchen Button geben!
-
Das dachte ich mir auch, aber nur so funktionierts. Ich mag auch nicht solche zusammengeflickten Lösungen. Aber hast du eine bessere Idee?
-
AndyDD schrieb:
Martin Richter schrieb:
Kann es sein, dass Du Default-Button und Foxus verwechselst?
Nein, hab ich nicht verwechselt.
Ich glaube doch. Willst du beeinflussen, welcher Button mit der Enter-Taste ausgelöst wird, oder welcher mit der Leertaste ausgelöst wird?
-
Ich will beim Starten des Dialoges den Focus auf einen Button (IDC_...) setzen, der nicht Ok- oder Abbrechen-Button ist. Dann soll beim Drücken der Enter-Taste das auch an den Button gehen der den Focus hat.
Ich hab das mal in einem anderen Projekt hinbekommen, da habe ich allerdings die Buttons mit Create eingefügt (also nichts was aus der Ressource kommt). Leider finde ich es nicht mehr.
Wenn ich den Default-Button auf diesen IDC_..., dann hab ich ein ähnliches Problem. Das Enter-Ereignis landet dann beim entsprechenden Button, allerdings kann ich dann nicht den Focus auf einen weiteren Button legen.
Oder kann man auch zur Laufzeit die Zuordnung des Default-Buttons ändern?
-
AndyDD schrieb:
Dann soll beim Drücken der Enter-Taste das auch an den Button gehen der den Focus hat.
Die Entertaste löst aber nicht den Button aus, der den Fokus hat, sondern den Default-Button. Das ist das Standardverhalten von Dialogen unter Windows, davon solltest nicht ohne guten Grund abweichen.
Mit dem Fokus hat dein Problem absolut nichts zu tun.
-
Ok, dann erst mal vielen Dank für den Hinweis. Hab ich zwar schon mal gehört, war mir aber so nicht recht bewusst.
Aber wie bekommt man das in den Griff? Sollte man zur Laufzeit mit SetDefID den Default-Button ändern? Der Hintergrund ist der: das Programm soll auf einer Messmaschine laufen, wo der Bediener sehr wenig mit der Maus arbeiten will (also alles über Tab, Esc und Enter).MFK schrieb:
Die Entertaste löst aber nicht den Button aus, der den Fokus hat, sondern den Default-Button. Das ist das Standardverhalten von Dialogen unter Windows, davon solltest nicht ohne guten Grund abweichen.
Mit dem Fokus hat dein Problem absolut nichts zu tun.
Aber wie erklärst du dann, dass es dennoch funktioniert, wenn man einmal mit der Maus den entsprechenden Button betätigt hat. Dann kann ich mit der Enter-Taste zwischen beiden Buttons hin und herspringen, obwohl der Default der Ok-Button ist.
-
Wenn man mit der Tab-Taste hin und herspringt zwischen Button-s dann verändert sich der Default Button.
Grundsätzlich wird bei Verwendnung von Tab ein Button zum Default-Button. Wird dagegen ein Edit Control angesprungen, dann wird der ursprüngliche Defualt Button wieder der Default Button.