2012-04-24 24 views
10

el atajo de teclado Ctrl+Backspace normalmente borra la palabra a la izquierda del cursor. Pero no funciona en ninguno de los controles Delphi estándar que cabría esperar (TEdit, TMemo, TComboBox etc.). Curiosamente, Ctrl+Delete funciona bien.Ctrl + Retroceso en los controles Delphi

¿Alguien sabe cómo corregir este comportamiento fácilmente?

Sé que anular el procedimiento KeyDown lo haría, pero esto es demasiado complicado como KeyDown tiene que ser anulado para cada componente.

+0

Esto no es un problema específico de Delphi. De hecho, 'TEdit' y los otros controles son simplemente envoltorios para los controles nativos de Microsoft Windows, y se comportan así. Pruebe, por ejemplo, el cuadro de edición en el cuadro de diálogo 'Seleccionar fuente' del Bloc de notas. Editar controles con finalización automática habilitada; sin embargo, acepte la tecla de acceso directo Ctrl + Retroceso. –

+3

Como Raymond ['said'] (http://blogs.msdn.com/b/oldnewthing/archive/2007/10/11/5395501.aspx). – TLama

+0

Interesante, yo no sabía eso. Pero sigue siendo un poco molesto porque el acceso directo funciona en muchos lugares, incluido el software MS. – oxo

Respuesta

17

Esto no es un problema específico de Delphi. De hecho, TEdit y los otros controles son simplemente envoltorios para los controles nativos de Microsoft Windows, y se comportan así. Pruebe, por ejemplo, el cuadro de edición en el cuadro de diálogo 'Seleccionar fuente' del Bloc de notas. Editar controles con finalización automática habilitada; sin embargo, acepte la tecla de acceso directo Ctrl + Retroceso. Creo que se puede permitir que esto fácilmente

SHAutoComplete(Edit1.Handle, 
    SHACF_AUTOAPPEND_FORCE_OFF or SHACF_AUTOSUGGEST_FORCE_OFF) 

(utiliza ShLwApi).

+0

+1, estaba escribiendo un comentario para cambiar la bandera de 'SHACF_DEFAULT = 0', era más rápido. Es la forma más fácil de implementar esta función. – TLama

+0

@TLama: Sí, el autocompletado real probablemente no sea lo que OP quiere ... Aún así, me pregunto si no hay una mejor manera de hacerlo. Después de todo, tiene poco sentido habilitar 'autocompletado desactivado' para que la tecla de acceso directo Ctrl + Retroceso funcione ... –

+0

Probablemente también debería agregarse el indicador 'SHACF_FILESYS_ONLY', no porque tenga sentido, sino porque la documentación explícitamente dice "Esta bandera debe usarse en combinación con uno o más de los indicadores SHACF_FILESYS * o SHACF_URL *". refiriéndose a las banderas que uso arriba. –

Cuestiones relacionadas