Flex Alert-Steuerelement: das Aktivieren der "default" - Taste auf enter/Leertaste-drücken

Egal was ich versuche, ich kann nicht scheinen, um das Feuer das click-Ereignis auf die Schaltfläche "Standard" in einer Alert-Steuerelement in ein Flex-3.4-Anwendung.

Alert.show(
    'Are you sure you want to delete the selected link?',
    'Confirm Delete',
    Alert.YES | Alert.CANCEL,
    null, 
    confirmDelete, 
    null, 
    Alert.YES
);

Im obigen code-Beispiel, das Letzte argument: Alert.YES ist die Angabe, dass der "default" - option (aus dem bit-Liste in der 3. argument) wird die Schaltfläche "ja". In der Theorie, und basiert auf meine Erfahrung bei der Entwicklung von Windows-Anwendungen, "Standard-Taste" bedeutet, dass das schlagen der enter-Taste (oder manchmal die Leertaste), löst das click-Ereignis für diese Schaltfläche.

Wenn es darauf ankommt, die betreffende Warnmeldung ist modal.

Kann ich sehen, dass der button gestaltet ist als der Standard: es wird ein bisschen ein halo oder einen zusätzlichen Rahmen, wenn im Vergleich zu den Abbrechen-button oder wenn Sie im Vergleich zu sich selbst, wenn die übergabe von null als letztes argument.

Jedoch, schlagen die enter und space Tasten scheinen keine Auswirkungen haben. Mache ich etwas falsch, oder es fehlen einige entscheidende Schritt, um diese Funktionalität zu arbeiten?


Update 2010-02-17:

Basierend auf meinen 2. Kommentar auf @rhtx Antwort:

Ok, habe endlich um zu versuchen, diese. Da die Alert-Klasse mit vielen statischen Methoden, die ich im wesentlichen nur kopiert der Alarm-und AlertForm Klassen in meinem Projekt (und es wurden einige relative Pfade für includes), und was ich am Ende mit war ein hässlicher alert-box, die funktioniert (oder nicht, je nach Perspektive) auf die gleiche Weise wie den Vanille-Alert-Klasse. Ich habe allerdings feststellen, dass, wenn Sie auf die REGISTERKARTE Schwerpunkt wird die alert-buttons, an welcher Stelle durch das drücken von Escape/Enter die gewünschte Wirkung haben... Also wie kann ich die beseitigen die Notwendigkeit, TAB zu drücken?

Ich habe versucht ein paar mehr Dinge und haben nicht überall zu bekommen.

Habe ich versucht fälscht einen TAB-Tastendruck-nach dem öffnen der alert (sowohl mit KEY_DOWN-und KEY_UP-Ereignis-Typen):

var a:Alert = Alert.show(msg, title, Alert.YES | Alert.CANCEL, null, fnCb);
var tabEvent:KeyboardEvent = new KeyboardEvent(
    KeyboardEvent.KEY_DOWN,
    true,
    false, 
    0,
    Keyboard.TAB
);
a.dispatchEvent(tabEvent);

Fand ich auch in diesem blog-post und versucht, dies zu tun zu konzentrieren, die alertForm:

var a:Alert = Alert.show(msg, title, Alert.YES | Alert.CANCEL, null, fnCb);
a.mx_internal::alertForm.setFocus();

Weder dieser warf Fehler, aber weder produziert das gewünschte Ergebnis.

Ich setzen Sie Ihren code in eine leere app aus und feuerte auf initialisieren. Ich fand, dass es würde nicht erfassen, die Tastatur eingeben oder Flucht, bis ich hatte, klickte irgendwo in der app. Können wir ein bisschen Erklärung, wie Sie diese Funktion aufgerufen?
Diese Warnung wird ein Bestätigungs-Dialogfeld für eine delete-Aktion gestartet, um einen Datensatz-Auswahl und klicken Sie auf die Schaltfläche; der Anwender muss also definitiv irgendwo geklickt in der Anwendung, bevor die Warnung angezeigt wird. Für was es Wert ist, wird der Datensatz ausgewählt wird, wird ein Element im TileList-Steuerelement mit einem benutzerdefinierten ItemRenderer.

InformationsquelleAutor Adam Tuttle | 2009-12-17

Schreibe einen Kommentar