Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Sumas limitadas de components combobox (https://www.clubdelphi.com/foros/showthread.php?t=74699)

Chichero 05-07-2011 20:11:03

Sumas limitadas de components combobox
 
Saludos brothers tengo q hacer prog q calcula calor pero por paredes exteriores, interiores , techo, piso.. cada uno puede estar compuesto de max 4 materiales de diferentes tipos (ya esta parte lo sé.. la cosa por ejemplo es que de el peso y resistencia de Paredes exteriores (Ppe, Rpe), Interiores (Ppi, Rpi), techo (Pti, Rti) y piso (psi, rsi)...
osea quiero saber como hacer para q el contador de Ppe y el de Rpe sume desde la combobox1 hasta la 4, Ppi y Rpi sume desde la 5 hasta la 9 y asi.. porque despues los usare para las diferentes formulas de calor. Y al final varios labels que diran el calor por paredes, otra para techo y asi...
Código Delphi [-]
//paredes esteriores
ppe:= 0;
Rpe:= 0;
Ape:= StrToFloat(Edit1.Text)
  for i:= 0 to ComponentCount -1 do
    if Components[i].ClassType = TComboBox then
      with TComboBox(Components[i]) do
        if ItemIndex <> -1 then // (COMO HAGO PARA QUE SEA DE La combobox1 a la 4 ésto es lo que me interesa):)
        begin
          ppe:= ppe + Material[ItemIndex].VPeso;
          Rpe:= Rpe + Material[ItemIndex].VResist;
        end;
Qpe:= Ape*ppe*(1/Rpe)*Dpe
//Luego otra repetitiva para ppi, Rpi que sea de la combobox5 a la 9 y asi sucesivamente

maeyanes 05-07-2011 22:44:54

Hola...

Puedes usar la propiedad Tag de los componentes para identificarlos:

Código Delphi [-]
// ...
if TComboBox(Components[i]).Tag in [0..4] then
begin
  // Hacer algo...
end
// ...


Saludos...

Chichero 05-07-2011 22:48:38

Gracias hermano eso lo coloco antes del for?

Caro 06-07-2011 14:01:11

Cita:

Empezado por Chichero (Mensaje 405593)
Gracias hermano eso lo coloco antes del for?

Hola Chichero, tiene que estar dentro del for, pero primero tienes que darle valores (1,2,3....) a la propiedad Tag de cada comboBox ya que por defecto es 0.

Código Delphi [-]
Ape:= StrToFloat(Edit1.Text)
  for i:= 0 to ComponentCount -1 do
    if Components[i] is TComboBox then
      with TComboBox(Components[i]) do
       if Tag in [1..4] then
        begin        
          if ItemIndex <> -1 then
           begin
             ..........................................
             ..........................................

Saluditos

Chichero 11-07-2011 23:22:51

Saludos caro ahora es que vi tu respuesta muchas gracias y bueno así si creo que servirá pero me sale error que no he declarado el 'ItemIndex', será que tengo que declararlo como variable? y si es así de qué tipo? LongInt o Integer? Gracias de antemano y disculpen la molestía...

Código Delphi [-]
//Para las resistencias y pesos
//paredes exteriores
ppe:= 0;
Rpe:= 0;
  for i:= 0 to ComponentCount -1 do
    if Components[i] is TComboBox then
      with TComboBox(Components[i]) do
      if Tag in [51..54] then
      begin
        if ItemIndex <> -1 then
        begin
          ppe:= ppe + Material[ItemIndex].VPeso;
          Rpe:= Rpe + Material[ItemIndex].VResist;
        end;
        end;
//Techo exterior
pte:=0;
Rte:=0;
        if if Tag in [51..54] then
      begin
        if ItemIndex <> -1 then
        begin
          pte:= pte + Material[ItemIndex].VPeso;
          Rte:= Rte + Material[ItemIndex].VResist;
        end;
        end;

maeyanes 12-07-2011 00:45:03

Hola...

Tu error está en como tienes agrupado el with:

Código Delphi [-]
//Para las resistencias y pesos
  //paredes exteriores
  ppe:= 0;
  Rpe:= 0;
  for i:= 0 to ComponentCount -1 do
    if Components[i] is TComboBox then
      with TComboBox(Components[i]) do
      begin
        if Tag in [51..54] then
          if ItemIndex <> -1 then
          begin
            ppe:= ppe + Material[ItemIndex].VPeso;
            Rpe:= Rpe + Material[ItemIndex].VResist
          end;
        //Techo exterior
        pte:=0;
        Rte:=0;
        if if Tag in [51..54] then
          if ItemIndex <> -1 then
          begin
            pte:= pte + Material[ItemIndex].VPeso;
            Rte:= Rte + Material[ItemIndex].VResist
          end
      end;


Saludos...


La franja horaria es GMT +2. Ahora son las 02:31:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi