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 06-10-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Declaracion If --- Then

Hola a todos
Bueno aqui molestando, tengo una pequeña consulta.
Tengo esto:
Código Delphi [-]
if ComboBox3.Text = 'Sumar' Then
 Edit4.Text := FloatToStr(StrToFloat(ComboBox4.Text) + StrToFloat(ComboBox5.Text));
 If Edit3.Text <> Edit4.Text Then
 begin
 Label4.Color:= CLRed;
 Label4.Caption:= 'X';
 end else
 begin
 Label4.Color:= CLLime;
 Label4.Caption:= 'OK';
  end;

if ComboBox3.Text = 'Restar' Then
 Edit4.Text := FloatToStr(StrToFloat(ComboBox4.Text) + StrToFloat(ComboBox5.Text));
 If Edit3.Text <> Edit4.Text Then
 begin
 Label4.Color:= CLRed;
 Label4.Caption:= 'X';
 end else
 begin
 Label4.Color:= CLLime;
 Label4.Caption:= 'OK';
  end;
Las dos sentencias son iguales, Sumar y Restar, pero quiero saber si se puedo hacer algo como esto, de alguna forma?
Código Delphi [-]
if ComboBox3.Text = 'Sumar' or 'Restar' Then
 Edit4.Text := FloatToStr(StrToFloat(ComboBox4.Text) + StrToFloat(ComboBox5.Text));
 If Edit3.Text <> Edit4.Text Then
 begin
 Label4.Color:= CLRed;
 Label4.Caption:= 'X';
 end else
 begin
 Label4.Color:= CLLime;
 Label4.Caption:= 'OK';
  end;
Asi por supuesto no me funciona, como podria hacerlo ?
Saludos y gracias de antemano
Responder Con Cita
  #2  
Antiguo 06-10-2006
Neiro Neiro is offline
Miembro
 
Registrado: oct 2006
Posts: 10
Poder: 0
Neiro Va por buen camino
Solo cambia tu if

intenta lo siguiente
if (ComboBox3.Text = 'Sumar') or (ComboBox3.Text = 'Restar') Then
Responder Con Cita
  #3  
Antiguo 06-10-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
En realidad el programa lo tengo actualmente asi y es peor, es repetitivo,
son 20 edit.
Código Delphi [-]
procedure TForm1.Button3Click(Sender: TObject);
begin
 Timer1.Enabled:= False;
 if ComboBox3.Text = 'Sumar' Then
 Edit4.Text := FloatToStr(StrToFloat(ComboBox4.Text) + StrToFloat(ComboBox5.Text));
 If Edit3.Text <> Edit4.Text Then
 Label4.Color:= CLRed;
 Label4.Caption:= 'X';
 If Edit3.Text = Edit4.Text Then
 Label4.Color:= CLLime;
 Label4.Caption:= 'OK';
 if ComboBox3.Text = 'Sumar' Then
 Edit6.Text := FloatToStr(StrToFloat(ComboBox6.Text) + StrToFloat(ComboBox7.Text));
 If Edit5.Text <> Edit6.Text Then
 Label5.Color:= CLRed;
 Label5.Caption:= 'X';
 If Edit5.Text = Edit6.Text Then
 Label5.Color:= CLLime;
 Label5.Caption:= 'OK';
 if ComboBox3.Text = 'Sumar' Then
 Edit8.Text := FloatToStr(StrToFloat(ComboBox8.Text) + StrToFloat(ComboBox9.Text));
 If Edit7.Text <> Edit8.Text Then
 Label6.Color:= CLRed;
 Label6.Caption:= 'X';
 If Edit7.Text = Edit8.Text Then
 Label6.Color:= CLLime;
 Label6.Caption:= 'OK';
 if ComboBox3.Text = 'Sumar' Then
 Edit10.Text := FloatToStr(StrToFloat(ComboBox10.Text) + StrToFloat(ComboBox11.Text));
 If Edit9.Text <> Edit10.Text Then
 Label7.Color:= CLRed;
 Label7.Caption:= 'X';
 If Edit9.Text = Edit10.Text Then
 Label7.Color:= CLLime;
 Label7.Caption:= 'OK';
 if ComboBox3.Text = 'Sumar' Then
 Edit12.Text := FloatToStr(StrToFloat(ComboBox12.Text) + StrToFloat(ComboBox13.Text));
 If Edit11.Text <> Edit12.Text Then
 Label8.Color:= CLRed;
 Label8.Caption:= 'X';
 If Edit11.Text = Edit12.Text Then
 Label8.Color:= CLLime;
 Label8.Caption:= 'OK';
 if ComboBox3.Text = 'Sumar' Then
 Edit14.Text := FloatToStr(StrToFloat(ComboBox14.Text) + StrToFloat(ComboBox15.Text));
 If Edit13.Text <> Edit14.Text Then
 Label9.Color:= CLRed;
 Label9.Caption:= 'X';
 If Edit13.Text = Edit14.Text Then
 Label9.Color:= CLLime;
 Label9.Caption:= 'OK';
 if ComboBox3.Text = 'Sumar' Then
 Edit16.Text := FloatToStr(StrToFloat(ComboBox16.Text) + StrToFloat(ComboBox17.Text));
 If Edit15.Text <> Edit16.Text Then
 Label10.Color:= CLRed;
 Label10.Caption:= 'X';
 If Edit15.Text = Edit16.Text Then
 Label10.Color:= CLLime;
 Label10.Caption:= 'OK';
 if ComboBox3.Text = 'Sumar' Then
 Edit18.Text := FloatToStr(StrToFloat(ComboBox18.Text) + StrToFloat(ComboBox19.Text));
 If Edit17.Text <> Edit18.Text Then
 Label11.Color:= CLRed;
 Label11.Caption:= 'X';
 If Edit17.Text = Edit18.Text Then
 Label11.Color:= CLLime;
 Label11.Caption:= 'OK';
 if ComboBox3.Text = 'Sumar' Then
 Edit20.Text := FloatToStr(StrToFloat(ComboBox20.Text) + StrToFloat(ComboBox21.Text));
 If Edit19.Text <> Edit20.Text Then
 Label12.Color:= CLRed;
 Label12.Caption:= 'X';
 If Edit19.Text = Edit20.Text Then
 Label12.Color:= CLLime;
 Label12.Caption:= 'OK';
 if ComboBox3.Text = 'Sumar' Then
 Edit22.Text := FloatToStr(StrToFloat(ComboBox22.Text) + StrToFloat(ComboBox23.Text));
 If Edit21.Text <> Edit22.Text Then
 Label13.Color:= CLRed;
 Label13.Caption:= 'X';
 If Edit21.Text = Edit22.Text Then
 Label13.Color:= CLLime;
 Label13.Caption:= 'OK';

 if ComboBox3.Text = 'Restar' Then
 Edit4.Text := FloatToStr(StrToFloat(ComboBox4.Text) - StrToFloat(ComboBox5.Text));
 If Edit3.Text <> Edit4.Text Then
 Label4.Color:= CLRed;
 Label4.Caption:= 'X';
 If Edit3.Text = Edit4.Text Then
 Label4.Color:= CLLime;
 Label4.Caption:= 'OK';
 if ComboBox3.Text = 'Restar' Then
 Edit6.Text := FloatToStr(StrToFloat(ComboBox6.Text) - StrToFloat(ComboBox7.Text));
 If Edit5.Text <> Edit6.Text Then
 Label5.Color:= CLRed;
 Label5.Caption:= 'X';
 If Edit5.Text = Edit6.Text Then
 Label5.Color:= CLLime;
 Label5.Caption:= 'OK';
 if ComboBox3.Text = 'Restar' Then
 Edit8.Text := FloatToStr(StrToFloat(ComboBox8.Text) - StrToFloat(ComboBox9.Text));
 If Edit7.Text <> Edit8.Text Then
 Label6.Color:= CLRed;
 Label6.Caption:= 'X';
 If Edit7.Text = Edit8.Text Then
 Label6.Color:= CLLime;
 Label6.Caption:= 'OK';
 if ComboBox3.Text = 'Restar' Then
 Edit10.Text := FloatToStr(StrToFloat(ComboBox10.Text) - StrToFloat(ComboBox11.Text));
 If Edit9.Text <> Edit10.Text Then
 Label7.Color:= CLRed;
 Label7.Caption:= 'X';
 If Edit9.Text = Edit10.Text Then
 Label7.Color:= CLLime;
 Label7.Caption:= 'OK';
 if ComboBox3.Text = 'Restar' Then
 Edit12.Text := FloatToStr(StrToFloat(ComboBox12.Text) - StrToFloat(ComboBox13.Text));
 If Edit11.Text <> Edit12.Text Then
 Label8.Color:= CLRed;
 Label8.Caption:= 'X';
 If Edit11.Text = Edit12.Text Then
 Label8.Color:= CLLime;
 Label8.Caption:= 'OK';
 if ComboBox3.Text = 'Restar' Then
 Edit14.Text := FloatToStr(StrToFloat(ComboBox14.Text) - StrToFloat(ComboBox15.Text));
 If Edit13.Text <> Edit14.Text Then
 Label9.Color:= CLRed;
 Label9.Caption:= 'X';
 If Edit13.Text = Edit14.Text Then
 Label9.Color:= CLLime;
 Label9.Caption:= 'OK';
 if ComboBox3.Text = 'Restar' Then
 Edit16.Text := FloatToStr(StrToFloat(ComboBox16.Text) - StrToFloat(ComboBox17.Text));
 If Edit15.Text <> Edit16.Text Then
 Label10.Color:= CLRed;
 Label10.Caption:= 'X';
 If Edit15.Text = Edit16.Text Then
 Label10.Color:= CLLime;
 Label10.Caption:= 'OK';
 if ComboBox3.Text = 'Restar' Then
 Edit18.Text := FloatToStr(StrToFloat(ComboBox18.Text) - StrToFloat(ComboBox19.Text));
 If Edit17.Text <> Edit18.Text Then
 Label11.Color:= CLRed;
 Label11.Caption:= 'X';
 If Edit17.Text = Edit18.Text Then
 Label11.Color:= CLLime;
 Label11.Caption:= 'OK';
 if ComboBox3.Text = 'Restar' Then
 Edit20.Text := FloatToStr(StrToFloat(ComboBox20.Text) - StrToFloat(ComboBox21.Text));
 If Edit19.Text <> Edit20.Text Then
 Label12.Color:= CLRed;
 Label12.Caption:= 'X';
 If Edit19.Text = Edit20.Text Then
 Label12.Color:= CLLime;
 Label12.Caption:= 'OK';
 if ComboBox3.Text = 'Restar' Then
 Edit22.Text := FloatToStr(StrToFloat(ComboBox22.Text) - StrToFloat(ComboBox23.Text));
 If Edit21.Text <> Edit22.Text Then
 Label13.Color:= CLRed;
 Label13.Caption:= 'X';
 If Edit21.Text = Edit22.Text Then
 Label13.Color:= CLLime;
 Label13.Caption:= 'OK';
Y no puse las multiplicaciones y divisiones, si no seria mas codigo repetido.
Como simplifico esto ?
Saludos
Responder Con Cita
  #4  
Antiguo 06-10-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Prueba asi:
Código Delphi [-]
if (ComboBox3.Text = 'Sumar') or (ComboBox3.Text ='Restar') Then
Responder Con Cita
  #5  
Antiguo 06-10-2006
meditacion meditacion is offline
Registrado
 
Registrado: sep 2006
Posts: 2
Poder: 0
meditacion Va por buen camino
Buenas,

Si pruebas con lo siguiente te quedará más claro el código y más reducido:

case combobox3.text of
'n' = {sentencias}
'ppp' = {sentencias}
else {sentencias}
end;


Un saludo
Responder Con Cita
  #6  
Antiguo 06-10-2006
Neiro Neiro is offline
Miembro
 
Registrado: oct 2006
Posts: 10
Poder: 0
Neiro Va por buen camino
Que es lo que tienes que hacer?

por que no dices mejor que quieres hacer, se me hace que tienes mucho codigo repetido que se pudiera simplificar
Responder Con Cita
  #7  
Antiguo 06-10-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Gracias pero si os fijais no sirve solo asi por esta parte:
en el caso de la suma:
Código Delphi [-]
if ComboBox3.Text = 'Sumar' Then
 Edit4.Text := FloatToStr(StrToFloat(ComboBox4.Text) + StrToFloat(ComboBox5.Text));
en el caso de la resta:
Código Delphi [-]
if ComboBox3.Text = 'Sumar' Then
 Edit4.Text := FloatToStr(StrToFloat(ComboBox4.Text) - StrToFloat(ComboBox5.Text));
En mi segundo mensaje puse parte del codigo, como lo tengo, son 20 edit, fijaros que el signo cambia o + o -, dependiendo de la operacion.
Saludos
Responder Con Cita
  #8  
Antiguo 06-10-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por meditacion
Buenas,

Si pruebas con lo siguiente te quedará más claro el código y más reducido:

case combobox3.text of
'n' = {sentencias}
'ppp' = {sentencias}
else {sentencias}
end;


Un saludo
Seguro que quedaría mas claro pero no se pueden usar strings en un case, al menos no en Delphi
Responder Con Cita
  #9  
Antiguo 06-10-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Se que hay un problema de repeticion, ya pense en variables, incluso en un array, (pero no lo manejo muy bien), la verdad el sistema funciona solo que quiero simplificarlo.
Saludos
Responder Con Cita
  #10  
Antiguo 06-10-2006
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Algo que podrías hacer con el TComboBox, es usar la propiedad ItemIndex:

Código Delphi [-]
case ComboBox3.ItemIndex of
  0: // Sumar
    begin
      // Aquí agrupas todo lo que se hace cuando la operación es sumar
    end;
  1:  // Restar
    begin
      // Aquí agrupas todo lo que se hace cuando la operación es restar
    end;
   2:  // etc...
     begin
       // Aquí agrupas todo lo que... etc... 
     end
end

Saludos...
Responder Con Cita
  #11  
Antiguo 06-10-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Muchas gracias a todos
Hare una mezcla de todo un poco.
Saludos
Responder Con Cita
  #12  
Antiguo 07-10-2006
Avatar de German
German German is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 133
Poder: 22
German Va por buen camino
Creo que dandole un poco mas de vuelta a la tuerca, el codigo podria ser el mismo en los dos casos (sumar o restar), si añades una condicion y un valor al principio, por ejemplo:

Código Delphi [-]
(...)
var SumaResta: Integer;
(...)

case ComboBox3.ItemIndex of
  0: SumaResta := 1; // Esta seleccionado el primer item -> Hay que sumar
  1: SumaResta := -1; // Esta seleccionado el segundo item -> Hay que restar
end;

// Mismo código para suma y resta:
Edit4.Text := FloatToStr(StrToFloat(ComboBox4.Text) + (StrToFloat(ComboBox5.Text) * SumaResta));
Edit6.Text := FloatToStr(StrToFloat(ComboBox6.Text) + (StrToFloat(ComboBox7.Text) * SumaResta));

etc...

50 + (10 * 1) = 60
50 + (10 * -1) = 40

Salu2.
__________________
Tengo las manos llenas de dedos... Tengo los dedos llenos de teclas...
Tengo las teclas desordenadas... Tengo el desorden muy controlado...
Tengo el control en mis manos.

Última edición por German fecha: 07-10-2006 a las 04:05:46.
Responder Con Cita
  #13  
Antiguo 07-10-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Caral, si funciona no lo toques, así de simple.

Si quieres optimizarlo, tocaría rehacer todo. Saber qué estas haciendo y buscar alternativas.

Yo no cambiaría los textos por Itemindex como han propuesto, es un lio total....
"Seleccionado el ItemIndex 3 y eso ¿era sumar o restar?, en el código tengo puesto un comentario diciendo que es sumar, pero el comentario está equivocado porque copié y pegué......"

El caso es que no entiendo nada de nada.....
Código Delphi [-]
If Edit7.Text <> Edit8.Text Then
 Label6.Color:= CLRed;
 Label6.Caption:= 'X';
 If Edit7.Text = Edit8.Text Then
 Label6.Color:= CLLime;
 Label6.Caption:= 'OK';

Según está ese código, si Edit7 tiene algo distinto al Edit8, las lineas a ejecutar son:
Código Delphi [-]
 Label6.Color:= CLRed;
 Label6.Caption:= 'X';
 Label6.Caption:= 'OK';

Es decir, se queda con el color rojo y diciendo "OK", porque no hay bloques begin ... end dentro de los "if" y por tatnto, si un "if" se cumple, solo ejecuta la siguiente sentencia que haya (aunque con el identado que haces quieras decir otra cosa).

Creo que lo correcto sería:
Código Delphi [-]
If Edit7.Text <> Edit8.Text Then
begin
 Label6.Color:= CLRed;
 Label6.Caption:= 'X';
end
else
begin
 Label6.Color:= CLLime;
 Label6.Caption:= 'OK';
end
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 07-10-2006 a las 23:19:33.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Declaracion de Variables berfer Firebird e Interbase 10 13-10-2011 21:12:20
Dónde poner está declaración lucasarts_18 Varios 5 24-04-2005 21:40:35
declaracion de variables... azaagh Varios 4 08-06-2004 15:44:45
Haciendo la declaración de la renta... santana Humor 1 14-04-2004 23:02:32


La franja horaria es GMT +2. Ahora son las 23:17:23.


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