evento keypress
hola amigos, como podria hacer que al pulsar el intro dentro de un edit1 se me
activara el codigo asociado a un boton: procedure TfrmBProductos.Edit1KeyPress(Sender: TObject; var Key: Char); begin if (key=#13) then begin .... /* Aqui es donde meteria el codigo*/ /* he probado con TfrmBProducto.BitBtn1Click; pero me dice uqe me faltan parametros*/ end; end; Gracias de antemano. |
Sospecho que te falta el parámetro Sender. Podría funcionar con algo como BitBtn1Click(BitBtn1) pero no puedo asegurarte nada, aquie no tengo Delphi :(
|
Como dice Gydba, te falta el parámetro Sender
TfrmBProducto.BitBtn1Click(Sender); No obstante, soy de la opinión que no debe de hacerse este tipo de programación. Si necesitas reutilizar código que haces en un botón, pon ese código en un procedure o function y llamalo/a desde el botón y desde donde quieras |
Además, cuando el compilador te dice que faltan parámetros puedes irte a la definición del procedimiento para ver qué parámetros requiere y buscar en la ayuda de Delphi acerca de su uso.
// Saludos |
a mi me funciona
nombreboton.click.
tan simple como esto. :D |
problema
Tengo este codigo:
procedure TfrmAlbaranes.txtDescuentoKeyPress(Sender: TObject; var Key: Char); begin if (key=#13) then frmAlbaranes.SpeedButton1.Click; end; Y en el evento Onclik del txtDescuento este procedimiento. pero no me funciona por que sera? |
voy mas alla
si le añado esta linea al codigo del post anterior:
procedure TfrmAlbaranes.txtDescuentoKeyPress(Sender: TObject; var Key: Char); begin MessageDlg(Key + ' has been pressed', mtInformation, [mbOK], 0); if (key=#13) then begin frmAlbaranes.SpeedButton1.Click; codigo.MostrarError('He mostrado una itro'); end end; Me captura todas las pulsaciones menos la del INTRO. A que sera debido eso? |
Hola!
Es sólo una sugerencia, porque no pones el código en el Evento FormKeyPress del formulario: Código:
if Key = #13 then De todas maneras yo lo realizo de la manera que te comentaba arriba y me funciona perfectamente. Espero que te sirva. Saludos! |
sigue sin funcionarme
Hola Nuria he hecho lo que tu me has dicho:
procedure TfrmAlbaranes.FormKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then if txtDescuento.Focused then frmAlbaranes.SpeedButton1.Click; end; Tengo en el evento OnKeyprees del formulario y del txtDescuento y no me funciona me captura todas las teclas menos la del intro y no se por que puede ser! Ademas lo habia puesto en el keyprees del txtDescuento por costumbre ya que yo vengo del VB. SALUDOS!! |
pongo esto y ahora no me captura el evento
procedure TfrmAlbaranes.FormKeyPress(Sender: TObject; var Key: Char);
begin if Key = #13 then if txtDescuento.Focused then begin MessageDlg(Key + ' has been pressed', mtInformation, [mbOK], 0); frmAlbaranes.SpeedButton1.Click; end; end; Ademas me he asegurado que la propiedad KeyPreview del formulario esta a true. |
es el intro !!
Sin embargo si pongo esto:
procedure TfrmAlbaranes.FormKeyPress(Sender: TObject; var Key: Char); begin MessageDlg(Key + ' has been pressed', mtInformation, [mbOK], 0); if Key = #13 then if txtDescuento.Focused then frmAlbaranes.SpeedButton1.Click end; Me captura todos las teclas MENOS EL INTRO:confused: :confused: |
Cuando pulsas intro, que valor tiene Key?
|
No Me Sale Nada!!
Es que no sale ni siquiera ningun valor, se lo salta, incluso si pulso la tecla Backspace me sale algo parecido a un cuadrado pero si pulso intro NO ME SALE NADA!!
|
Acabo de probar lo siguiente.
Propiedad del formulario KeyPreview a true y Código:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); |
tio esto es de expediente x
Pues yo tengo esto:
procedure TfrmAlbaranes.FormKeyPress(Sender: TObject; var Key: Char); begin MessageDlg(Key + ' has been pressed', mtInformation, [mbOK], 0); ShowMessage('lolo'); end; Lo he puesto para probarlo tal y como tu me dices, la propiedad Keypreview del formulario frmAlbaranes a TRUE y si pulso cualquier tecla me funciona al pelo: ejemplo: pulso 2 y me sale : 2 has been pressed y despues 'lolo'. Pero si pulso el intro se lo pasa por los cojones, puede ser que sea alguna propiedad que he tocado por ahi?. aunque no creo. voy a reiniciar!!. P.D. Uso windows 2000 aunque creo que eso tendra que ver mas bien poco.:confused: :confused: :confused: |
Lo he vuelto a probar :
Con la propiedad del form KeyPreview = True. Código:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); |
Puede ser por estar en un portatil.-.
vamos a ver, he reiniciado y esto no chuta vamos a ver:
Me hace pensar una cosa maquiavelica, tengo un portatil....Osea que estoy en un portatil mi pregunta es la siguiente: ¿Tendra algo que ver?, por que claro todas las demas teclas me las coge, a ver si es un codigo raro. Por que desde luego tengo que probarlo en un fijo. No se que pensar claro!! |
Bingooooooooooooooo
Lo sabia, es por la puta mierda de portatil, que puta rabia, si pulo MAY+INTRO ese es el caracter #13, que puta rabia de verdad!! Con razon ya me podia volver loco.
Para que lo sepais mi portatil es un ADL SmartBook. ME cago en la puta.... QUE GRANGRENA: |
No sé si tiene algo que ver que estés trabajando en el portatil. Lo que si te digo es que cuando pulso intro y muestro el valor de Key, no tengo ningún valor en el mensaje que muestro por pantalla. Pero me detecta que es #13 (tecla enter).
|
hola a mi me pasa lo mismo, si el componente es tedit solo me pasa al siguiente si presiono shit+Enter, tengo delphi 6
y tengo un teclado Millenniun (uno negro con funciones especiales), ¡Será el teclado? |
Y a nadie se le ha ocurrido pobar con el evento "Onkeydown" y key=vk_return? (Siempre que el keypreview del form este a true, claro)
Probadlo. Saludos. |
Mismo problema: no detecta el enter
Utilizo Delphi 6 y tengo el mismo problema que tenía ronson.
En el evento KeyPress de un edit tengo esto: Código:
if (( Key = #13 ) {and ( QLinies.State in [dsEdit,dsInsert])}) then En el form tengo la propieadad KeyPreview=True. Yo estoy trabajando en un ordenador de sobremesa, no un portátil. La verdad es que llevo muchas horas probando esto hasta que he encontrado este hilo. La verdad es que no sé que puede ser. ¿Un error del Delphi 6? |
He descubierto el problema
Haciendo pruebas con un Form en blanco he descubierto el problema: cuándo había un único componente no había ningún problema: detectaba el enter.
Al haber más de uno lo que hacia en el primer enter pasa el foco al siguiente componente (como un Tab). Esto es porqué está definido en el global aplicación. Ahora me las intentaré apañar con el evento on exit. |
Como dice llonigualker, probar con el evento OnKeyDown y con la siguiente condicion:
Siempre que la propiedad KeyPreview del formulario este a true |
Cita:
Yo puse un: Código:
No me funciona pero en cambio, si le doy a MAYUS + INTRO si que entra en el evento Keypress del dbedit. Como puedo solucionar esto??? Saludos |
Cambia del evento OnKeyPress al OnKeyDown, y recuerda poner la propiedad KeyPreview del formulario a True.
|
Cita:
|
tiene la propiedad KeyPreview del Form a True
|
Mira he probado esto, con el OnKeyPress y funciona:
Formulario donde insertas el DBEdit KeyPreview -> True DBEdit en el Evento OnKeyPress
Y no me hace nada raro, el evento OnKeyDown es prácticamente igual pero cambiamos #13 por VK_RETURN |
Minio, lo he probado de las dos maneras pero me sigue sin ir
|
Ahora mismo no se me ocurre por que no funciona, puedes probar con F5 para hacerlo correr paso a paso con F8, para ver que es lo que hace y lo comentas.
|
Tienes algo programado en el OnKeyPress del Formulario?, o en el OnKeyDown del Formulario???
|
Eliminé todo el contenido del keypress del dbedit y puse lo que me dijiste en el keydown. También realicé el seguimiento paso a paso y lo extraño es que entra en un botón de Aceptar que tengo pero no entra ni en el keydown ni en el keypress.
Se me hace muy raro que ocurra esto. Saludos |
Tienes que tener algún código que anule lo que tienes en ese DBEdit, puede que sea lo que dices en ese botón aceptar, ¿Ocurre antes o depués del evento que deberia ejecutar en el DBEdit?
|
Has probado a ver si te admite otra tecla del teclado como por ejemplo una letra ('C' o 'c')?
|
A ver como me explico: si pulso la tecla de SHIFT y luego la letra me lo toma como dos teclas distintas, no sé si eso es a lo que te referias.
Si pulso el boton MAYUS y le pongo la letra, si que me la reconoce como mayuscula. :confused: Estoy hecha un lio, no entiendo nada de pq me pasa eso :confused: |
A lo que referia es que intentases capturar otra tecla que no sea el intro mejor una letra.
De todas formas vamos a ver si esto funciona. Pon esto en el evento OnEnter del DBEdit. DBEdit.OnKeyPress := DBEditKeyPress; Pon el KeyPreview a False, por si tuvieras eentos programados en el form. Y no se me ocurre otra osa que pruebes tambien el evento OnKeyUp |
Ni con esas :( pero bueno a ver si se me ocurre algo pq un compañero mio si que tiene lo del intro y a él le funciona pero poniendo el mismo código a mi me sigue sin ir :(
Gracias por todo Saludos ^_^ |
Cita:
El problema es que procesar el ENTER en un control, habiendo un botón de default es contradictorio y tendrás que decidir entre cual de los dos comportamientos quieres. // Saludos |
He hecho eso y por fin me va.
Ahora tengo que intentar arreglar el código pero vamos q ya me va :D Muchisimas gracias ^_^ Saludos :D Buah, que contenta estoy pq es que encima lo necesitaba para un trabajo y ahora el programa se va a quedar de lujo. Gracias otra vez ^_^ |
La franja horaria es GMT +2. Ahora son las 06:13:03. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi