Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-11-2014
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 16
danielmj Va por buen camino
Hola de nuevo,

he cambiado el codigo a esto:
Código Delphi [-]
procedure TrForm.FormActivate(Sender: TObject);
var
  i: integer;
  total: extended;
  total2: TStringList; //variable de pruebas

begin
  total2.Create;
  for i:= 0 to lista.Items.Count -1 do
    begin
      total2.Add(lista.Items[i].SubItems[9]); //Esta linea da error "access violation"
      total:= total + strToFloat(total2.Text) ; //(StrToFloat(lista.Items.Item[i].SubItems[11]));
      Label35.Caption:= FloatToStr(total);
      label36.Caption:= total2.Text;
    end;
end;

He intentado basarme en este código:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
   i : Integer;
   StrList : TStringList;
begin
   StrList := TStringList.Create;
   StrList.Duplicates := dupIgnore;
   StrList.Sorted := True;
   for i := ListView1.Items.Count-1 downto 0 do
   begin
      if LowerCase(ListView1.Items[i].SubItems[0]) = LowerCase(Edit1.Text) then
         StrList.Add(ListView1.Items[i].SubItems[0])
      else
         ListView1.Items.Delete(i);
   end;
   ShowMessage(StrList.Text);
   StrList.Free;
end;

Que peternece a este post http://www.clubdelphi.com/foros/showthread.php?t=82673, ahí se usa un messagebox para mostrar el valor y yo uso una etiqueta, creo que es la unica diferencia, aun asi, no me funciona. Ni puedosumar los valores de una columna ni me muestra en el label el contenido de una celda de la lista.
Ya estoy desesperao, incluso he cerrado delphi varias veces cabreao y al rato vuelvo a insistir en vano.

En fin, saludos.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.

Última edición por danielmj fecha: 13-11-2014 a las 12:51:20.
Responder Con Cita
  #2  
Antiguo 13-11-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Daniel.
Cita:
Empezado por danielmj Ver Mensaje
...
Ya estoy desesperao, incluso he cerrado delphi varias veces cabreao y al rato vuelvo a insistir en vano.
No desesperes que algo va a salir...

Revisa el demo que te adjunto a ver si es lo que estás buscando.

Saludos
Archivos Adjuntos
Tipo de Archivo: zip danielmj.zip (4,1 KB, 3 visitas)
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 13-11-2014
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Pero, te estás liando tú solo. Divide y vencerás.
Antes pregunté y no has contestado: ¿dónde está el código que da los valores a la lista?, ¿qué valore son?
Responder Con Cita
  #4  
Antiguo 13-11-2014
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 16
danielmj Va por buen camino
Hola, Casimiro y ecfisa,

Al primero (casimiro), el código que envia los datos a la lista es este:

Form1. button2.click.... //envia datos al tercer formulario (rForm), que contiene la lista.

Código Delphi [-]
Public
    { Public declarations }

    precios : array[0..8] of Real;
....

procedure TForm1.Button2Click(Sender: TObject);
begin
  case cmbHebillas.ItemIndex of
    0: precios[0]:= 0.30;
    1: precios[1]:= 0.35;
    2: precios[2]:= 0.60;
    3: precios[3]:= 1.00;
    4: precios[4]:= 1.20;
    5: precios[5]:= 1.30;
    6: precios[6]:= 1.70;
    7: precios[7]:= 1.50;
    8: precios[8]:= 1.50;
  end;

  i:= (StrToFloat(label9.Caption)+StrToFloat(label10.Caption)+StrToFloat(label11.Caption)+
  StrToFloat(label12.Caption)+StrToFloat(label13.Caption)+StrToFloat(label14.Caption)+
  StrToFloat(label15.Caption)+StrToFloat(label16.Caption));

  label17.Caption:= FormatFloat('0.00',i); //-----------------------------> Uso una etiqueta para almacenar el valor de i (no sé si será lo mas correcto)
  rForm.Label35.Caption:= FormatFloat('0.00',i*StrToInt(edit1.Text)); //---> Esta etiqueta "label35", es la que tiene que mostrar la suma de todas las cantidades en el rForm (último formulario que contiene la lista)
  pDatos.showModal; //.......................> Siguiente formulario donde se piden los datos de contacto y direcciones. (pDatos)
End;

Segundo formulario (pDatos)
Código Delphi [-]
procedure TpDatos.Button2Click(Sender: TObject);
var
  valores : array[1..100 , 1..100] of longint; //----------> Array para obtener un valor aleatorio que concatenado al telef. del cliente me daría la referencia del pedido.
  i,j, valor: longint;                                  //----------> variables locales para dos "For". Usadas para recorrer el array

begin
  if (cmbProvincia.Text = '') then
    button2.Enabled:= false
  else
    button2.Enabled:= true;

  for i:= 0 to 99 do                                 //-----------> Desde aquí...
    for j:= 0 to 99 do
      begin
        valor:= random(valores[i,j]);
        label8.Caption:= 'R'+IntToStr(valor);
      end;
  with rForm.plista.Items.Add do
    begin
      subItems.Add(mask1.Text+'_'+label8.Caption); //------> ...hasta aquí para generar la referencia del pedido. Y desde aquí empieza a enviar datos a la segunda lista (plista) del siguiente formulario (rForm). 
                                                                                  //Con esta lista no tengo problemas, así que no la comento.
      SubItems.Add(edit1.Text);
      SubItems.add(edit2.Text);
      SubItems.add(edit3.Text);
      SubItems.add(cmbProvincia.Text);
      SubItems.add(mask2.Text);
      SubItems.add(mask1.Text);
    end;

    with rForm.lista.Items.Add do //........................> Desde aquí 
    begin
      subItems.Add(mask1.Text+'_'+label8.Caption);
      SubItems.Add(Form1.cmbHebillas.Text);
      SubItems.add(Form1.Label7.Caption+', '+form1.Label8.Caption);

      if Form1.opc1.Checked then
        subItems.Add(form1.opc1.Caption);

      if Form1.opc2.Checked then
        subItems.Add(form1.opc2.Caption);

      if Form1.opc3.Checked then
        subItems.Add(Form1.opc3.Caption);


      if Form1.ch1.Checked then
        subItems.Add('Si')
      else
        subItems.Add('No');

      if Form1.ch2.Checked then
        subItems.Add('Si')
      else
        subItems.Add('No');

      if Form1.ch3.Checked then
        subItems.Add('Si')
      else
        subItems.Add('No');

      if Form1.ch4.Checked then
        subItems.Add('Si')
      else
        subItems.Add('No');

      SubItems.Add(form1.Label17.Caption);
      SubItems.Append(form1.edit1.Text); //....................> El edit1, envia las cantidades de un mismo articulo a la lista.

    end; //.................................................................> hasta aquí, envía datos a la lista 1 (llamada "lista" en formulario)

  with rForm do
    begin
      Label4.Caption:= edit1.Text;
      Label2.Caption:= mask1.Text+'_'+pDatos.label8.Caption;
      Label6.Caption:= edit2.Text;
      Label8.Caption:= edit3.Text;
      label10.Caption:= cmbProvincia.Text;
      label12.Caption:= mask2.Text;
      label14.Caption:= mask1.Text;
    end;
  rForm.showModal;
End.

Por ultimo el rForm que contiene la lista:
Código Delphi [-]
procedure TrForm.FormActivate(Sender: TObject);
var
  i: integer;
  total: extended;
  total2: TStringList; //variable de pruebas

begin
  total2.Create;
  for i:= 0 to lista.Items.Count -1 do
    begin
      total2.Add(lista.Items[i].SubItems[9]);
      total:= total + strToFloat(total2.Text) ; //(StrToFloat(lista.Items.Item[i].SubItems[11]));
      Label35.Caption:= FloatToStr(total);
      label36.Caption:= total2.Text;
    end;
end;

De este último trozo, label35 no muestra la suma de nada, tan solo el precio del ultimo articulo introducido en la lista. Y la linea que hace mencion a "total2",da error de "access violation"
Ya he probado con todos los indices por si meto alguno que no exista, pero no hay forma.

Espero no haberme liado explicando todo.

Hola ecfisa, ahora me pongo con tu demo, a ver si consigo algo, estuve escribiendo este post antes de mirarlo, en cuanto sepa algo te digo.

Gracias a los dos, con lo que vaya surgiendo os comento, y si empiezo a rallar la pesadez decirmelo eh.
Un saludo.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.

Última edición por danielmj fecha: 13-11-2014 a las 15:41:34.
Responder Con Cita
  #5  
Antiguo 13-11-2014
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 16
danielmj Va por buen camino
Hola ecfisa,

He mirado tu demo, la he puesto a andar y tira bien, va sin problemas. Ahora copio y pego tu codigo (el del boton) + la constante maxitem de la seccion implementation, lo acomodo a mi programa, le cambio los nombres de los controles para que no de error y esas cosas y lo que pasa es esto https://www.youtube.com/watch?v=IFnz...ature=youtu.be

Si, he llegado a un punto, que ya no sé que hacer para que funcione el asunto, y he optado por hacer una captura de video y que veais los pasos que sigo hasta que salta la liebre (el error).

Saludos y gracias.

Tu código modificado:

...
implementation
Código Delphi [-]
const
MAXITEMS = 10;
...

procedure TrForm.Button5Click(Sender: TObject);
var
  i: Integer;
  total: Double;
  li: TListItem;

begin
  total:= 0;
  for i:= 0 to MAXITEM -1 do
  begin
    li:= Lista.Items.Item[i];
    total:= total + StrToFloat(li.SubItems[Lista.Columns.Count-1]);
  end;
  label36.Caption:= FormatFloat('0.00', total)
  //ShowMessage(FormatFloat('0.00', total));
end;
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.

Última edición por danielmj fecha: 13-11-2014 a las 16:30:25.
Responder Con Cita
  #6  
Antiguo 13-11-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Daniel.

Es que el índice debería ser
Código Delphi [-]
...
  total:= total + StrToFloat(li.SubItems[Lista.Columns.Count-2]);
O dicho de otro modo: Count - 1 - columna 0 (que no usas) , es decir que no sería 9 sino 8.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 13-11-2014
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 16
danielmj Va por buen camino
Hola ecfisa, he probado a poner ".columns.count -2" pero entonces pasa esto:



Asi que, sigo igual, sin poder sumar nada.

Un saludo y gracias por tu tiempo.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #8  
Antiguo 13-11-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Daniel.

Acabo de mirar el video, fijate que la constante MAXITEM es un valor arbitrario que usé solo para el ejemplo.

En el video que mostras intenta recorrer diez items cuando sólo hay dos ingresados, deberías usar:
Código Delphi [-]
var
  i: Integer;
  total: Double;
  li: TListItem;
begin
  total:= 0;
  for i:= 0 to ListView1.Items.Count-1 do // (MAXITEM no)
  begin
    li:= ListView1.Items.Item[i];
    total:= total + StrToFloat(li.SubItems[ListView1.Columns.Count-2]);
  end;
  ShowMessage(FormatFloat('0.00', total));
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Error Sumando Columnas SQL martini002 Conexión con bases de datos 44 25-08-2012 20:28:57
sumando dos float no pbtengo valor real lmpadron C++ Builder 2 12-09-2011 21:33:03
Sumando columnas con Qreport ? Coco_jac Varios 5 27-01-2006 14:57:56
error sumando campos weke SQL 2 02-06-2004 14:52:33
Sumando columnas/Filas StartKill Firebird e Interbase 5 27-05-2004 09:42:32


La franja horaria es GMT +2. Ahora son las 04:00:42.


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
Copyright 1996-2007 Club Delphi