Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   list box (https://www.clubdelphi.com/foros/showthread.php?t=73669)

juaarias 09-05-2011 01:11:39

list box
 
como hago para sumar toda una columna de un listbox, intente hacerlo con for pero al ejecutarlo me dice algo como que los valores float no es valido

ecfisa 09-05-2011 01:20:50

Hola.

Seguramente la conversión de alguno de los items no dá como resultado un número válido.

Para sumar los items podés hacer:
Código Delphi [-]
function SumarItems(LB: TListBox): Double;
var
 i: Integer;
 v: Double;
begin
  for i:= 0 to LB.Items.Count -1 do
  begin
   if TryStrToFloat(LB.Items[i],v) then
     Result:= Result + v
   else
     raise Exception.Create('El item '+IntToStr(i+1)+' no es un número válido');
  end;
end;

Llamada:
Código Delphi [-]
...
begin
  ShowMessage(FloatToStr(SumarItems(ListBox1)));
end;

Saludos.

juaarias 09-05-2011 01:30:20

graciass
 
hola gracias por responder, yo pensaba se podia hacer algo asi:

Código Delphi [-]
 for I := 0 to frmFactura.stgFactura.rowCount - 1 do
        frmFactura.stgFactura.Cells[3,lstProductos.Count+1]:=floattostr((strtofloat(frmFactura.stgFactura.Cells[3,lstProductos.Count+1]))+(strtofloat(frmFactura.stgFactura.cells[3,I]))) ;


se entiende?quise hacer algo de esta manera:

a:=a+b
para ir acumulando la suma en a.

Caral 09-05-2011 01:32:42

Hola
ListBox ????.
Suena a stringGrid. ???
Saludos

juaarias 09-05-2011 01:36:49

perdoooooooooommmmmmmmmmmm
 
si string gris era....mil disculpas

ecfisa 09-05-2011 01:41:04

Hola juaarias.

Pero entonces no estamos hablando de un TListBox sino de un TStringGrid que no es lo mismo...

En ese caso sería:
Código Delphi [-]
function SumarColumna(ST: TStringGrid; Column: Integer): Double;
var
  i: Integer;
  v: Double;
begin
  Result:= 0;
  for i:= ST.FixedRows to ST.RowCount-1 do
    if TryStrToFloat(ST.Cells[Column, i],v) then
      Result:= Result+v;
end;

Llamada:
Código Delphi [-]
begin
  ShowMessage(FloatToStr(SumarColumna(StringGrid1, 1)));  // en este caso suma columna 1
end;

Saludos.

Caral 09-05-2011 01:41:29

Hola
Cita:

Empezado por juaarias (Mensaje 399376)
si string gris era....mil disculpas

Lo siento, pero no lo se hacer en uno de estos string GRIS.
Tal vez de otro color :D
Saludos

Caral 09-05-2011 01:43:54

Hola
Pero amigo: Y si el string es gris ????:D:D
Saludos

ecfisa 09-05-2011 01:49:09

Cita:

Empezado por Caral (Mensaje 399379)
Hola
Pero amigo: Y si el string es gris ????:D:D
Saludos

Pero mi amigo... para eso está la propiedad Color!! :D

Un saludo.

Caral 09-05-2011 01:51:09

Hola
Ves, sabia que me había perdido esa clase :D:D:D
Saludos

juaarias 09-05-2011 23:21:07

uhhhh
 
me hagarraron para la chacota jeje. les tengo otra con sulta quiero ingresar un dato en un edit y ese dato pasarlo a un items seleccionado de un listbox...
pensaba que podria haber alguna propiedad que indique que el items estaba seleccionado pero no he encontrado nada espero puedan ayudarme en vez de reir asi jejej saludos...

ecfisa 10-05-2011 03:06:45

Hola juaarias.

Es así como pensabas, esa propiedad es ItemIndex.

Te pongo un ejemplo de como pasar el contenido de un Edit al Item actualmente seleccionado en el ListBox:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBox1.Items[ListBox1.ItemIndex]:= Edit1.Text;
end;

Nota: Naa, no te agarramos para la chacota... es sólo una cuotita de humor. :)

Un saludo.


La franja horaria es GMT +2. Ahora son las 10:32:38.

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