Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-03-2005
Phacko Phacko is offline
Miembro
 
Registrado: jul 2004
Posts: 157
Poder: 20
Phacko Va por buen camino
Sender que no envia....

Que tal a todos...

Tengo una duda, trabajo en un Form con varios controles y necesito combiar entre ellos ya sea al precionar enter o bien con las teclas de dirección (fechas), todo bien pero cuando necesito diferenciar entre los controles para abrir la lista de un TComboBox no me responde con Sender, diferencia bien el control pero no abre la lista, he aqui algunas lineas de codigo:

Else
If ((Key In[VK_DOWN,VK_RETURN]) And (ActiveControl Is TComboBox)) Then
TComboBox(Sender).DroppedDown:=True;
// CBMarca.DroppedDown:=true;

Alguien podria comentar algo al respecto??????

Gracias.
Responder Con Cita
  #2  
Antiguo 29-03-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por Phacko
Alguien podria comentar algo al respecto??????
Yo evaluaría/utilizaría sender para todo, o para nada:

Código Delphi [-]
If ((Key In[VK_DOWN,VK_RETURN]) And (Sender Is TComboBox)) Then
  TComboBox(Sender).DroppedDown:=True;

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 29-03-2005
Phacko Phacko is offline
Miembro
 
Registrado: jul 2004
Posts: 157
Poder: 20
Phacko Va por buen camino
Gracias..Pero igual no funciona.

Pues cambie el codigo por el que me indicaste pero sigue igual, no funciona, faltara algun swith que activar o sobornar a algun duende dentro del compilador???

Que opinan????
Responder Con Cita
  #4  
Antiguo 29-03-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hasta ahora no has dicho en dónde manejas el código que muestras. Si lo haces, como creo, en el evento OnKeyPress del formulario entonces tienes que tomar la otra opción que propone Federico: ActiveControl en todos lados. Porque Sender es el formulario y no el control y en cualquier momento la línea

TComboBox(Sender).DroppedDown:=True;

te va a mandar un "Access violation".

// Saludos
Responder Con Cita
  #5  
Antiguo 30-03-2005
Phacko Phacko is offline
Miembro
 
Registrado: jul 2004
Posts: 157
Poder: 20
Phacko Va por buen camino
En efecto...

Que tal???

Pues casi casi, Roman, el codigo lo tengo en el evento OnKeyDown del Form, no entendi muy bien lo que quieres decir con "ActiveControl en todos lados".

Gracias por su tiempo y ayuda.
Responder Con Cita
  #6  
Antiguo 30-03-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
O sea, el parámetro Sender identifica al control que manda el mensaje, que en general será el control al que está asociado el evento.

Como tú estás usando el evento OnKeyDown del formulario, entonces es éste el que entra como parámetro Sender y por tanto no sirve para lo que quieres.

Por otro lado ActiveControl identifica al control del formulario que tenga el foco del teclado.

Entonces, en tu código original debes omitir Sender en todos lados (la opción "para nada" de Federico) y usar ActiveControl:

Código Delphi [-]
If (Key in [VK_DOWN, VK_RETURN]) and (ActiveControl Is TComboBox) then
  TComboBox(ActiveControl).DroppedDown := true;

Tú usabas Sender en un lado y ActiveControl en otro pero en este caso Sender <> ActiveControl y por ello no funcionaba.

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 09:04:05.


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
Copyright 1996-2007 Club Delphi