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 30-12-2020
AlejandroCalica AlejandroCalica is offline
Miembro
 
Registrado: nov 2020
Posts: 35
Poder: 0
AlejandroCalica Va por buen camino
compactar codigo combobox

felices fiestas y les traigo otro problema que me surgio con un combobox.
combobox con varios items con un texto especifico, con el cual no hago ninguna operacion, peso si con el item seleccionado
ejemplo

item 1 valor 10%
item 2 valor 8%
item 3 valor 6%
y asi N item ok

bueno dependiendo del tem seleccionado, realisare una operacion con una variable integer pero tengo este codigo extenso y m duda es si existe un metido donde no repta tanto la parte de operaciones, estaba pensando como en un array dependiente del item seleccionado o algo asi

aqui esta el codigo

variables que ocupo
Código Delphi [-]
var
  Form1: TForm1;
  //Pesouble;
  CB1:integer;
  Oper,Gra: Currency;
  Hc,Cm,Ov,Fv,Sn:Currency;

esto es ya en si el codigo que ejecuta las operaciones y donde siento que estoy repitiendo una cantdad considerable de codigo que podria compactar, por fabor diganme que puedo hacer les agradesco.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
CB1:=combobox1.ItemIndex+1;

case CB1 of
1: begin //Cachorro de 2  meses

   Gra:=StrToFloatDef(Edit1.Text,0) * 10 /100;
   Label5.Text:=FloattoStr(Gra);
   //60,20,10,5,5
   Hc:=(Gra * 60 )/100;
   Cm:=(Gra * 20) /100;
   Ov:=(Gra * 10) /100;
   Fv:=(Gra * 5) /100;
   Sn:=(Gra * 5) /100;
   Label9.Text:=FloattoStr(Hc)  ;
   Label10.Text:=FloattoStr(Cm)  ;
   Label11.Text:=FloattoStr(Ov)  ;
   Label12.Text:=FloattoStr(Fv)  ;
   Label13.Text:=FloattoStr(Sn)  ;


end;
2: begin //Cachorro de 3 a 4 meses
   Gra:=StrToFloatDef(Edit1.Text,0) * 8 /100;
   Label5.Text:=FloattoStr(Gra);
   Hc:=(Gra * 60 )/100;
   Cm:=(Gra * 20) /100;
   Ov:=(Gra * 10) /100;
   Fv:=(Gra * 5) /100;
   Sn:=(Gra * 5) /100;
   Label9.Text:=FloattoStr(Hc)  ;
   Label10.Text:=FloattoStr(Cm)  ;
   Label11.Text:=FloattoStr(Ov)  ;
   Label12.Text:=FloattoStr(Fv)  ;
   Label13.Text:=FloattoStr(Sn)  ;
end;
3:begin//Cachorro de 5 a 6 meses
  Gra:=StrToFloatDef(Edit1.Text,0) * 6 /100;
  Label5.Text:=FloattoStr(Gra);
  Hc:=(Gra * 60 )/100;
  Cm:=(Gra * 20) /100;
  Ov:=(Gra * 10) /100;
  Fv:=(Gra * 5) /100;
  Sn:=(Gra * 5) /100;
  Label9.Text:=FloattoStr(Hc)  ;
  Label10.Text:=FloattoStr(Cm)  ;
  Label11.Text:=FloattoStr(Ov)  ;
  Label12.Text:=FloattoStr(Fv)  ;
  Label13.Text:=FloattoStr(Sn)  ;
end;

4: begin //Cachorro de 7 a 8 año
   Gra:=StrToFloatDef(Edit1.Text,0) * 4 /100;
   Label5.Text:=FloattoStr(Gra);
   Hc:=(Gra * 60 )/100;
   Cm:=(Gra * 20) /100;
   Ov:=(Gra * 10) /100;
   Fv:=(Gra * 5) /100;
   Sn:=(Gra * 5) /100;
   Label9.Text:=FloattoStr(Hc)  ;
   Label10.Text:=FloattoStr(Cm)  ;
   Label11.Text:=FloattoStr(Ov)  ;
   Label12.Text:=FloattoStr(Fv)  ;
   Label13.Text:=FloattoStr(Sn)  ;
end;
5: begin //Cachorro de 9 a 10 año
   Gra:=StrToFloatDef(Edit1.Text,0) * 3 /100;
   Label5.Text:=FloattoStr(Gra);
   Hc:=(Gra * 60 )/100;
   Cm:=(Gra * 20) /100;
   Ov:=(Gra * 10) /100;
   Fv:=(Gra * 5) /100;
   Sn:=(Gra * 5) /100;
   Label9.Text:=FloattoStr(Hc)  ;
   Label10.Text:=FloattoStr(Cm)  ;
   Label11.Text:=FloattoStr(Ov)  ;
   Label12.Text:=FloattoStr(Fv)  ;
   Label13.Text:=FloattoStr(Sn)  ;
end;
6: begin //Cachorro de 11 a 12 año
   Gra:=StrToFloatDef(Edit1.Text,0) * 2 /100;
   Label5.Text:=FloattoStr(Gra);
   Hc:=(Gra * 60 )/100;
   Cm:=(Gra * 20) /100;
   Ov:=(Gra * 10) /100;
   Fv:=(Gra * 5) /100;
   Sn:=(Gra * 5) /100;
   Label9.Text:=FloattoStr(Hc)  ;
   Label10.Text:=FloattoStr(Cm)  ;
   Label11.Text:=FloattoStr(Ov)  ;
   Label12.Text:=FloattoStr(Fv)  ;
   Label13.Text:=FloattoStr(Sn)  ;
end;

7: begin //Adulto Actividad Alta
   Gra:=StrToFloatDef(Edit1.Text,0) * 4 /100;
   Label5.Text:=FloattoStr(Gra);
   Hc:=(Gra * 60 )/100;
   Cm:=(Gra * 20) /100;
   Ov:=(Gra * 10) /100;
   Fv:=(Gra * 5) /100;
   Sn:=(Gra * 5) /100;
   Label9.Text:=FloattoStr(Hc)  ;
   Label10.Text:=FloattoStr(Cm)  ;
   Label11.Text:=FloattoStr(Ov)  ;
   Label12.Text:=FloattoStr(Fv)  ;
   Label13.Text:=FloattoStr(Sn)  ;
end;
8: begin //Adulto Actividad Media
   Gra:=StrToFloatDef(Edit1.Text,0) * 3 /100;
   Label5.Text:=FloattoStr(Gra);
   Hc:=(Gra * 60 )/100;
   Cm:=(Gra * 20) /100;
   Ov:=(Gra * 10) /100;
   Fv:=(Gra * 5) /100;
   Sn:=(Gra * 5) /100;
   Label9.Text:=FloattoStr(Hc)  ;
   Label10.Text:=FloattoStr(Cm)  ;
   Label11.Text:=FloattoStr(Ov)  ;
   Label12.Text:=FloattoStr(Fv)  ;
   Label13.Text:=FloattoStr(Sn)  ;
end;
9: begin //Adulto Cedentario
   Gra:=StrToFloatDef(Edit1.Text,0) * 2.5 /100;
   Label5.Text:=FloattoStr(Gra);
   Hc:=(Gra * 60 )/100;
   Cm:=(Gra * 20) /100;
   Ov:=(Gra * 10) /100;
   Fv:=(Gra * 5) /100;
   Sn:=(Gra * 5) /100;
   Label9.Text:=FloattoStr(Hc)  ;
   Label10.Text:=FloattoStr(Cm)  ;
   Label11.Text:=FloattoStr(Ov)  ;
   Label12.Text:=FloattoStr(Fv)  ;
   Label13.Text:=FloattoStr(Sn)  ;
end;
10: begin //Esterilizada o Castrado
    Gra:=StrToFloatDef(Edit1.Text,0) * 2.5 /100;
    Label5.Text:=FloattoStr(Gra);
    Hc:=(Gra * 60 )/100;
    Cm:=(Gra * 20) /100;
    Ov:=(Gra * 10) /100;
    Fv:=(Gra * 5) /100;
    Sn:=(Gra * 5) /100;
    Label9.Text:=FloattoStr(Hc)  ;
    Label10.Text:=FloattoStr(Cm)  ;
    Label11.Text:=FloattoStr(Ov)  ;
    Label12.Text:=FloattoStr(Fv)  ;
    Label13.Text:=FloattoStr(Sn)  ;
end;
11: begin //Perro mayor de 6 años
    Gra:=StrToFloatDef(Edit1.Text,0) * 2 /100;
    Label5.Text:=FloattoStr(Gra);
    Hc:=(Gra * 60 )/100;
    Cm:=(Gra * 20) /100;
    Ov:=(Gra * 10) /100;
    Fv:=(Gra * 5) /100;
    Sn:=(Gra * 5) /100;
    Label9.Text:=FloattoStr(Hc)  ;
    Label10.Text:=FloattoStr(Cm)  ;
    Label11.Text:=FloattoStr(Ov)  ;
    Label12.Text:=FloattoStr(Fv)  ;
    Label13.Text:=FloattoStr(Sn)  ;
end;

end;
end;

esto es lo que repito y no cambia en nada solo el valor que toma la variable Gra

Código Delphi [-]
 Label5.Text:=FloattoStr(Gra);
   Hc:=(Gra * 60 )/100;
   Cm:=(Gra * 20) /100;
   Ov:=(Gra * 10) /100;
   Fv:=(Gra * 5) /100;
   Sn:=(Gra * 5) /100;
   Label9.Text:=FloattoStr(Hc)  ;
   Label10.Text:=FloattoStr(Cm)  ;
   Label11.Text:=FloattoStr(Ov)  ;
   Label12.Text:=FloattoStr(Fv)  ;
   Label13.Text:=FloattoStr(Sn)  ;
Responder Con Cita
  #2  
Antiguo 30-12-2020
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 19
kuan-yiu Va camino a la fama
Deja dentro del 'case' las instrucciones específicas para cada caso y a continuación el resto, fuera del 'case'. Así operará con las variables ya modificadas.
Responder Con Cita
  #3  
Antiguo 30-12-2020
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 19
kuan-yiu Va camino a la fama
Código Delphi [-]
case CB1 of
1: //Cachorro de 2  meses
   Gra:=StrToFloatDef(Edit1.Text,0) * 10 /100;

2: //Cachorro de 3 a 4 meses
   Gra:=StrToFloatDef(Edit1.Text,0) * 8 /100;

// y todas las demás opciones
else
   Gra:=1; // Para cubrir todos los casos
end;

Label5.Text:=FloattoStr(Gra);
Hc:=(Gra * 60 )/100;
Cm:=(Gra * 20) /100;
Ov:=(Gra * 10) /100;
Fv:=(Gra * 5) /100;
Sn:=(Gra * 5) /100;
Label9.Text:=FloattoStr(Hc)  ;
Label10.Text:=FloattoStr(Cm)  ;
Label11.Text:=FloattoStr(Ov)  ;
Label12.Text:=FloattoStr(Fv)  ;
Label13.Text:=FloattoStr(Sn)  ;
Responder Con Cita
  #4  
Antiguo 30-12-2020
AlejandroCalica AlejandroCalica is offline
Miembro
 
Registrado: nov 2020
Posts: 35
Poder: 0
AlejandroCalica Va por buen camino
perfectooooooo....

Cita:
Empezado por kuan-yiu Ver Mensaje
Código Delphi [-]
case CB1 of
1: //Cachorro de 2  meses
   Gra:=StrToFloatDef(Edit1.Text,0) * 10 /100;

2: //Cachorro de 3 a 4 meses
   Gra:=StrToFloatDef(Edit1.Text,0) * 8 /100;

// y todas las demás opciones
else
   Gra:=1; // Para cubrir todos los casos
end;

Label5.Text:=FloattoStr(Gra);
Hc:=(Gra * 60 )/100;
Cm:=(Gra * 20) /100;
Ov:=(Gra * 10) /100;
Fv:=(Gra * 5) /100;
Sn:=(Gra * 5) /100;
Label9.Text:=FloattoStr(Hc)  ;
Label10.Text:=FloattoStr(Cm)  ;
Label11.Text:=FloattoStr(Ov)  ;
Label12.Text:=FloattoStr(Fv)  ;
Label13.Text:=FloattoStr(Sn)  ;

asi quedo al final

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
CB1:=combobox1.ItemIndex+1;
case CB1 of
1: begin //Cachorro de 2  meses
   Gra:=StrToFloatDef(Edit1.Text,0) * 10 /100;
end;
2: begin //Cachorro de 3 a 4 meses
   Gra:=StrToFloatDef(Edit1.Text,0) * 8 /100;
end;
3:begin//Cachorro de 5 a 6 meses
  Gra:=StrToFloatDef(Edit1.Text,0) * 6 /100;
end;
4: begin //Cachorro de 7 a 8 año
   Gra:=StrToFloatDef(Edit1.Text,0) * 4 /100;
end;
5: begin //Cachorro de 9 a 10 año
   Gra:=StrToFloatDef(Edit1.Text,0) * 3 /100;
end;
6: begin //Cachorro de 11 a 12 año
   Gra:=StrToFloatDef(Edit1.Text,0) * 2 /100;
end;
7: begin //Adulto Actividad Alta
   Gra:=StrToFloatDef(Edit1.Text,0) * 4 /100;
end;
8: begin //Adulto Actividad Media
   Gra:=StrToFloatDef(Edit1.Text,0) * 3 /100;
end;
9: begin //Adulto Cedentario
   Gra:=StrToFloatDef(Edit1.Text,0) * 2.5 /100;
end;
10: begin //Esterilizada o Castrado
    Gra:=StrToFloatDef(Edit1.Text,0) * 2.5 /100;
end;
11: begin //Perro mayor de 6 años
    Gra:=StrToFloatDef(Edit1.Text,0) * 2 /100;
end else
   Gra:=1;
end;
Label5.Text:=FloattoStr(Gra);
Hc:=(Gra * 60 )/100;
Cm:=(Gra * 20) /100;
Ov:=(Gra * 10) /100;
Fv:=(Gra * 5) /100;
Sn:=(Gra * 5) /100;
Label9.Text:=FloattoStr(Hc)  ;
Label10.Text:=FloattoStr(Cm)  ;
Label11.Text:=FloattoStr(Ov)  ;
Label12.Text:=FloattoStr(Fv)  ;
Label13.Text:=FloattoStr(Sn)  ;
end;

se podra hacer mas compacto??????
Responder Con Cita
  #5  
Antiguo 30-12-2020
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 19
kuan-yiu Va camino a la fama
Si solo hay una línea dentro del 'case' sobran el 'begin end' (igual que le pasa al 'else'), como te puse yo en el código.
Existen otros componentes que te pueden devolver un valor asociado a cada item. Busca a ver si puedes usar alguno de ellos.
Puedes crear una TStringList con pares de valores: por un lado el número de item y por el otro el valor del cálculo pero implica código de creación. Reduces aquí pero sumas en otra parte.

Última edición por kuan-yiu fecha: 30-12-2020 a las 12:06:54.
Responder Con Cita
  #6  
Antiguo 30-12-2020
AlejandroCalica AlejandroCalica is offline
Miembro
 
Registrado: nov 2020
Posts: 35
Poder: 0
AlejandroCalica Va por buen camino
me dejaste igual o con mas dudas jajajajajaja, es que imagine qque podria no se usar los item dentro de un array y asi acortar lineas de codigo las opciones de en listar los items del combobox o algo asi kuan-yiu

y ya abusando de tu conocimiento, como se puede cambiar el icono y la pantalla principal de fondo negro con esa flamita roja que aparece en las aplicacones terminadas en las Apks??
Responder Con Cita
  #7  
Antiguo 30-12-2020
AlejandroCalica AlejandroCalica is offline
Miembro
 
Registrado: nov 2020
Posts: 35
Poder: 0
AlejandroCalica Va por buen camino
estoy usando Delphi 10.3.3
Responder Con Cita
  #8  
Antiguo 30-12-2020
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 19
kuan-yiu Va camino a la fama
No tengo Delphi 10, pero supongo que estará donde siempre:
Porject | Options | Application
Ahí puedes cambiar el logo por un .ico con todos los tamaños que necesites.

La pantalla principal la defines tú, es un formulario y tiene propiedades como el color o las dimensiones, la posición en que aparece, si se puede minimizar...
Responder Con Cita
  #9  
Antiguo 30-12-2020
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 19
kuan-yiu Va camino a la fama
También puedes consultar este hilo a ver si te ayuda o alguno de los que está abajo:
http://www.clubdelphi.com/~marcsc/fo...ad.php?t=28534
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
Ejecutar onchange de combobox por codigo darkone2k4 Varios 4 04-10-2010 06:24:08
Codigo en los Items de un Combobox juanjoassenza OOP 3 20-07-2006 10:19:03
Compactar Exe's Xianto Varios 7 30-11-2005 13:09:56
selecionar y mostrar por codigo un item den un ComboBox? dantemol OOP 2 09-11-2003 17:08:22
compactar AbcXxx Firebird e Interbase 6 07-07-2003 10:15:30


La franja horaria es GMT +2. Ahora son las 10:58: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