Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Tecla Enter no funciona

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Tecla Enter no funciona Responder citando

Buenas amigos tengo el siguiente procedimiento que captura las teclas que voy presionando todas me funcionan bien excepto la de enter que cuando hago correr el program no me la reconoce y si todas las demas, podria decirme alguien que estoy haciendo mal ?? Sad
Este procedimeinto lo utilizo para una calculadora que he creado
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
if (Key=='0')
{if (seg==false)
{
c.adc("0");
pantalla->Text=c.visualiza();
}
}


if (Key=='1'){
if (seg==false)
{
c.adc("1");
pantalla->Text=c.visualiza();
}
else
pantalla->Text=FloatToStr(c.seg_onzagramo());
}
if (Key=='2'){
if (seg==false)
{
c.adc("2");
pantalla->Text=c.visualiza();
}
else
pantalla->Text=FloatToStr(c.seg_librakilo());
}
if (Key=='3'){
c.adc("3");
pantalla->Text=c.visualiza();
}
if (Key=='4'){
if (seg==false)
{
c.adc("4");
pantalla->Text=c.visualiza();
}
else
pantalla->Text=FloatToStr(c.seg_gramoonza());

}
if (Key=='5'){
if (seg==false)
{
c.adc("5");
pantalla->Text=c.visualiza();
}
else
pantalla->Text=FloatToStr(c.seg_galonlitro());
}
if (Key=='6'){
if (seg==false)
{
c.adc("6");
pantalla->Text=c.visualiza();
}
else
pantalla->Text=FloatToStr(c.seg_litrogalon());
}

if (Key=='7'){
if (seg==false)
{
c.adc("7");
pantalla->Text=c.visualiza();
}
else
pantalla->Text=FloatToStr(c.seg_pintascmc());
}

if (Key=='8'){
if (seg==false)
{
c.adc("8");
pantalla->Text=c.visualiza();
}
else
pantalla->Text=FloatToStr(c.seg_cmcpintas());
}

if (Key=='9'){
c.adc("9");
pantalla->Text=c.visualiza();
}

if (Key=='/'){ op1=StrToFloat(pantalla->Text);
pantalla->Text="";
tipo="Div";
c.insertarop1(op1);
c.ac();
}

if (Key=='*'){
op1=StrToFloat(pantalla->Text);
pantalla->Text="";
tipo="Multi";
c.insertarop1(op1);
c.ac();

}

if (Key=='-'){
op1=StrToFloat(pantalla->Text);
pantalla->Text="";
tipo="Restar";
c.insertarop1(op1);
c.ac();
}

if (Key=='+'){
op1=StrToFloat(pantalla->Text);
pantalla->Text="";
tipo="Sumar";
c.insertarop1(op1);
c.ac();
}

if (Key == 13){
Key = 0;
op2=StrToFloat(pantalla->Text);
c.insertarop2(op2);
if (tipo=="Multi")
pantalla->Text=FloatToStr(c.multiplicar());
if (tipo=="Div")
pantalla->Text=FloatToStr(c.dividir());
if (tipo=="Restar")
pantalla->Text=FloatToStr(c.restar());
if (tipo=="Sumar")
pantalla->Text=FloatToStr(c.sumar());
}

if (Key==VK_F1){
c.ac();
pantalla->Text="";
seg=false;
}

if (Key==VK_DELETE){
c.quitardato();
pantalla->Text=c.visualiza();
}

if (Key==34){
if (DecimalSeparator==',') DecimalSeparator=',';
else
DecimalSeparator='.';
c.adc(".");
pantalla->Text=c.visualiza();
}



}
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola, marcelofabiani, resulta difícil saber qué quieres hacer cuando se pulsa return (quedaría más claro si usaras VK_RETURN en lugar de 13). Primero haces
Código:
Key = 0;
pero luego no vuelves a usar la variable Key, luego esta sentencia no hace nada relevante, al parecer.

¿Por qué dices que no la reconoce? Sustituye la línea anterior por, p. ej.,
Código:
ShowMessage("Has pulsado return");
y tendrás la evidencia de que realmente se detecta.

Otro detalle de tu código es el mal uso de la estructura if, si las fueras anidando el código sería mucho más eficiente, algo así como
Código:
if (Key == '0') {
   if (!seg) {
      c.adc("0");
      pantalla->Text=c.visualiza();
   }
}
else if (Key == '1') {
   if (!seg) {
      c.adc("1");
      pantalla->Text=c.visualiza();
   }
   else
      pantalla->Text=FloatToStr(c.seg_onzagramo());
}
else if (Key == '2') {
   if (!seg) {
      c.adc("2");
      pantalla->Text=c.visualiza();
   }
   else
      pantalla->Text=FloatToStr(c.seg_librakilo());
}
else if ...
Así si has pulsado la tecla '0' hace lo que tiene que hacer y termina la función sin preguntarse si la tecla es otra (no puede serlo, es '0').

Una vez lo tengas así entenderás un poco mejor qué hace tu código y seguro que "ves" las mejoras que admite.

Suerte.
_________________
Ojos ... no son ojos porque los ves, son ojos porque te miran
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.