Ver Mensaje Individual
  #11  
Antiguo 18-04-2012
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Reputación: 17
jhonalone Va por buen camino
Muchas gracias, de nuevo, Ecfisa.

¡¡¡ CONSEGUIDO !!!

Pero te informo cómo:

(GetKeyState(VK_RETURN) < 0) no ha sido necesario ponerlo en OnClick.

El evento OnChange está vacío.

Sigue sin reconocer la tecla ENTER ni en OnKeyDown ni en OnKeyPress.

He tenido que despreciar la primera pulsación de Enter que provenía del procedimiento TFClien.LMDEdit6KeyDown() que era la que provocaba la autoselección en el Combo.
Paraa ello he utilizado una variable boleana global, que se activa al pulsar el primer Enter en el procedimiento TFClien.LMDEdit6KeyDown() y se desactiva al autoseleccionarse el Combo por medio del procedimiento TFClien.ComboBox1KeyUp() al recibir el foco el Combo.

Sigo sin entender, ¿por qué no reconoce la tecla Enter en OnKeyDown ni en OnKeyPress?

Tampoco ha sido necesario desactivar el BEEP al pulsar ENTER, simplemente porque no sonaba, pero me guardo el código para cuando lo necesite, que es muy útil.

Dejo las modificaciones, para quien le pueda interesar:
Código Delphi [-]
var //Global a la Form
  PrimeraVezEnter: Boolean;
...............
// Procedimiento inductor de la llamada con Enter
procedure TFClien.LMDEdit6KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Button6.Enabled // Si no está en Altas
then begin
     if Key=vk_RETURN
     then begin
          if ValorOriginal<>LMDEdit6.Text
          then begin
               SpeedButton3.Click;
               PrimeraVezEnter := True;
               end;
          end;
     end;
end;

//En el procedimiento que rellena el Combo,( después de rellenarlo)
procedure TFClien.SpeedButton3Click(Sender: TObject);
begin
.......................     
  Combobox1.Visible:=True;     
  Combobox1.ItemIndex := 0;     
  ComboBox1.SetFocus;     
  ComboBox1.Perform(CB_SHOWDROPDOWN, 1,0);
  // Despliega el Combo    
  ComboBox1.SetFocus;
  ..............
end;

// En el evento OnKeyUp del Combo (OnkeyDown y OnKeyPress no reconecen ENTER)
procedure TFClien.ComboBox1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
beginif Key=vk_RETURN
     then begin
          if PrimeraVezEnter
          then begin
               PrimeraVezEnter := False;
               Exit;
               end;
          end;// Instrucciones al seleccionar item en el Combo.............
end;

Dejo el mecanismo de acción por si interesa a alguien.

Gracias una vez más, Ecfica, por tu ayuda y esfuerzo, sin ellos no lo hubiera conseguido. ¡Eres mi ídolo...|
¡A ver cúanto aguanto sin tener que molestarte!

Saludos...

Última edición por ecfisa fecha: 18-04-2012 a las 13:51:23. Razón: Corregir identación de código
Responder Con Cita