 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
marcelofabiani Cdt

Registrado: 24 Mar 2005Mensajes: 2
|
Publicado: Mie 30 Mar, 2005 3:16 pm Asunto: Tecla Enter no funciona |
|
|
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 ??
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 |
|
 |
Enrique Master


Registrado: 13 Ago 2002Mensajes: 261Ubicación: La Vila Joiosa (Alacant)
|
Publicado: Mie 30 Mar, 2005 3:49 pm Asunto: |
|
|
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 hacespero 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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|